test_content_revision.py 2.4KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. # -*- coding: utf-8 -*-
  2. from collections import OrderedDict
  3. from nose.tools import eq_
  4. from sqlalchemy import inspect
  5. from tracim.models import ContentRevisionRO
  6. from tracim.models import User
  7. from tracim.models.data import ContentType
  8. from tracim.tests import BaseTest
  9. class TestContentRevision(BaseTest):
  10. def _new_from(self, revision):
  11. excluded_columns = (
  12. 'revision_id',
  13. '_sa_instance_state',
  14. 'depot_file',
  15. 'node',
  16. 'revision_read_statuses',
  17. )
  18. revision_columns = [attr.key for attr in inspect(revision).attrs if not attr.key 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 - 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)