test_content_revision.py 2.4KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. # -*- coding: utf-8 -*-
  2. from collections import OrderedDict
  3. from sqlalchemy import inspect
  4. from tracim.models import ContentRevisionRO
  5. from tracim.models import User
  6. from tracim.models.data import ContentType
  7. from tracim.tests import BaseTest
  8. class TestContentRevision(BaseTest):
  9. def _new_from(self, revision):
  10. excluded_columns = (
  11. 'revision_id',
  12. '_sa_instance_state',
  13. 'depot_file',
  14. 'node',
  15. 'revision_read_statuses',
  16. )
  17. revision_columns = [attr.key for attr in inspect(revision).attrs
  18. if attr.key not in excluded_columns]
  19. new_revision = ContentRevisionRO()
  20. for revision_column in revision_columns:
  21. old_revision_column_value = getattr(revision, revision_column)
  22. setattr(new_revision, revision_column, old_revision_column_value)
  23. return new_revision
  24. def _get_dict_representation(self, revision):
  25. keys_to_remove = ('updated', '_sa_instance_state')
  26. dict_repr = OrderedDict(sorted(revision.__dict__.items()))
  27. for key_to_remove in keys_to_remove:
  28. dict_repr.pop(key_to_remove, None)
  29. return dict_repr
  30. # TODO - G.M - 28-03-2018 - [libContent] Reenable this test
  31. # def test_new_revision(self):
  32. # admin = self._session.query(User).filter(User.email == 'admin@admin.admin').one()
  33. # workspace = self._create_workspace_and_test(name='workspace_1', user=admin)
  34. # folder = self._create_content_and_test(name='folder_1', workspace=workspace, type=ContentType.Folder)
  35. # page = self._create_content_and_test(
  36. # workspace=workspace,
  37. # parent=folder,
  38. # name='file_1',
  39. # description='content of file_1',
  40. # type=ContentType.Page,
  41. # owner=admin
  42. # )
  43. #
  44. # self._session.flush()
  45. #
  46. # # Model create a new instance with list of column
  47. # new_revision_by_model = ContentRevisionRO.new_from(page.revision)
  48. # # Test create a new instance from dynamic listing of model columns mapping
  49. # new_revision_by_test = self._new_from(page.revision)
  50. #
  51. # new_revision_by_model_dict = self._get_dict_representation(new_revision_by_model)
  52. # new_revision_by_test_dict = self._get_dict_representation(new_revision_by_test)
  53. #
  54. # # They must be identical
  55. # eq_(new_revision_by_model_dict, new_revision_by_test_dict)