diff --git a/mayan/apps/metadata/tests/literals.py b/mayan/apps/metadata/tests/literals.py index 678cfb9d87..b8d5f98203 100644 --- a/mayan/apps/metadata/tests/literals.py +++ b/mayan/apps/metadata/tests/literals.py @@ -9,6 +9,10 @@ TEST_DEFAULT_VALUE = 'test' TEST_INCORRECT_LOOKUP_VALUE = '0' TEST_INVALID_DATE = '___________' TEST_LOOKUP_TEMPLATE = '1,2,3' +TEST_METADATA_TYPES_FIXTURES = [ + {'name': 'test_metadata_type_1', 'label': 'test metadata type 1'}, + {'name': 'test_metadata_type_2', 'label': 'test metadata type 2'}, +] TEST_METADATA_TYPE_LABEL = 'test metadata type' TEST_METADATA_TYPE_LABEL_2 = 'test metadata type label 2' TEST_METADATA_TYPE_LABEL_EDITED = 'test metadata type label edited' diff --git a/mayan/apps/metadata/tests/mixins.py b/mayan/apps/metadata/tests/mixins.py index 9caa6925f6..d61a7fe7d8 100644 --- a/mayan/apps/metadata/tests/mixins.py +++ b/mayan/apps/metadata/tests/mixins.py @@ -1,33 +1,42 @@ from __future__ import unicode_literals +import copy + from ..models import MetadataType from .literals import ( - TEST_METADATA_TYPE_LABEL, TEST_METADATA_TYPE_LABEL_EDITED, - TEST_METADATA_TYPE_NAME, TEST_METADATA_TYPE_NAME_EDITED + TEST_METADATA_TYPE_LABEL_EDITED, TEST_METADATA_TYPE_NAME_EDITED, + TEST_METADATA_TYPES_FIXTURES ) class MetadataTypeTestMixin(object): + test_metadata_types = [] + def setUp(self): super(MetadataTypeTestMixin, self).setUp() - self.test_metadata_type = MetadataType.objects.create( - name=TEST_METADATA_TYPE_NAME, label=TEST_METADATA_TYPE_LABEL + self.test_metadata_types_fixtures = copy.copy( + TEST_METADATA_TYPES_FIXTURES ) - -class MetadataTestsMixin(object): def _create_test_metadata_type(self): self.test_metadata_type = MetadataType.objects.create( - label=TEST_METADATA_TYPE_LABEL, - name=TEST_METADATA_TYPE_NAME + **self.test_metadata_types_fixtures.pop() + ) + self.test_metadata_types.append(self.test_metadata_type) + + +class MetadataTestMixin(object): + def setUp(self): + super(MetadataTestMixin, self).setUp() + self.test_metadata_types_fixtures = copy.copy( + TEST_METADATA_TYPES_FIXTURES ) def _request_test_metadata_type_create_view(self): return self.post( viewname='metadata:setup_metadata_type_create', data={ - 'label': TEST_METADATA_TYPE_LABEL, - 'name': TEST_METADATA_TYPE_NAME + **self.test_metadata_types_fixtures.pop() } ) diff --git a/mayan/apps/metadata/tests/test_api.py b/mayan/apps/metadata/tests/test_api.py index be845b8174..8eda7c3cdc 100644 --- a/mayan/apps/metadata/tests/test_api.py +++ b/mayan/apps/metadata/tests/test_api.py @@ -18,17 +18,13 @@ from ..permissions import ( from .literals import ( TEST_METADATA_TYPE_LABEL, TEST_METADATA_TYPE_LABEL_2, - TEST_METADATA_TYPE_NAME, TEST_METADATA_TYPE_NAME_2, TEST_METADATA_VALUE, - TEST_METADATA_VALUE_EDITED + TEST_METADATA_TYPE_NAME, TEST_METADATA_TYPE_NAME_2, + TEST_METADATA_VALUE, TEST_METADATA_VALUE_EDITED ) +from .mixins import MetadataTypeTestMixin -class MetadataTypeAPITestCase(BaseAPITestCase): - def _create_test_metadata_type(self): - self.test_metadata_type = MetadataType.objects.create( - label=TEST_METADATA_TYPE_LABEL, name=TEST_METADATA_TYPE_NAME - ) - +class MetadataTypeAPITestCase(MetadataTypeTestMixin, BaseAPITestCase): def _request_test_metadata_type_create_view(self): return self.post( viewname='rest_api:metadatatype-list', data={ @@ -101,7 +97,7 @@ class MetadataTypeAPITestCase(BaseAPITestCase): self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual( - response.data['label'], TEST_METADATA_TYPE_LABEL + response.data['label'], self.test_metadata_type.label ) def _request_test_metadata_type_edit_view_via_patch(self): @@ -115,16 +111,25 @@ class MetadataTypeAPITestCase(BaseAPITestCase): def test_metadata_type_patch_view_no_access(self): self._create_test_metadata_type() + metadata_type_values = self._model_instance_to_dictionary( + instance=self.test_metadata_type + ) response = self._request_test_metadata_type_edit_view_via_patch() self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) self.test_metadata_type.refresh_from_db() - self.assertEqual(self.test_metadata_type.label, TEST_METADATA_TYPE_LABEL) - self.assertEqual(self.test_metadata_type.name, TEST_METADATA_TYPE_NAME) + self.assertEqual( + self._model_instance_to_dictionary( + instance=self.test_metadata_type + ), metadata_type_values + ) def test_metadata_type_patch_view_with_access(self): self._create_test_metadata_type() + metadata_type_values = self._model_instance_to_dictionary( + instance=self.test_metadata_type + ) self.grant_access( obj=self.test_metadata_type, permission=permission_metadata_type_edit ) @@ -133,8 +138,11 @@ class MetadataTypeAPITestCase(BaseAPITestCase): self.assertEqual(response.status_code, status.HTTP_200_OK) self.test_metadata_type.refresh_from_db() - self.assertEqual(self.test_metadata_type.label, TEST_METADATA_TYPE_LABEL_2) - self.assertEqual(self.test_metadata_type.name, TEST_METADATA_TYPE_NAME_2) + self.assertNotEqual( + self._model_instance_to_dictionary( + instance=self.test_metadata_type + ), metadata_type_values + ) def _request_test_metadata_type_edit_view_via_put(self): return self.put( @@ -147,25 +155,39 @@ class MetadataTypeAPITestCase(BaseAPITestCase): def test_metadata_type_put_view_no_access(self): self._create_test_metadata_type() + metadata_type_values = self._model_instance_to_dictionary( + instance=self.test_metadata_type + ) + response = self._request_test_metadata_type_edit_view_via_put() self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) self.test_metadata_type.refresh_from_db() - self.assertEqual(self.test_metadata_type.label, TEST_METADATA_TYPE_LABEL) - self.assertEqual(self.test_metadata_type.name, TEST_METADATA_TYPE_NAME) + self.assertEqual( + self._model_instance_to_dictionary( + instance=self.test_metadata_type + ), metadata_type_values + ) def test_metadata_type_put_view_with_access(self): self._create_test_metadata_type() + metadata_type_values = self._model_instance_to_dictionary( + instance=self.test_metadata_type + ) self.grant_access( - obj=self.test_metadata_type, permission=permission_metadata_type_edit + obj=self.test_metadata_type, + permission=permission_metadata_type_edit ) response = self._request_test_metadata_type_edit_view_via_put() self.assertEqual(response.status_code, status.HTTP_200_OK) self.test_metadata_type.refresh_from_db() - self.assertEqual(self.test_metadata_type.label, TEST_METADATA_TYPE_LABEL_2) - self.assertEqual(self.test_metadata_type.name, TEST_METADATA_TYPE_NAME_2) + self.assertNotEqual( + self._model_instance_to_dictionary( + instance=self.test_metadata_type + ), metadata_type_values + ) def _request_metadata_type_list_view(self): return self.get(viewname='rest_api:metadatatype-list') @@ -180,13 +202,15 @@ class MetadataTypeAPITestCase(BaseAPITestCase): def test_metadata_type_list_view_with_access(self): self._create_test_metadata_type() self.grant_access( - obj=self.test_metadata_type, permission=permission_metadata_type_view + obj=self.test_metadata_type, + permission=permission_metadata_type_view ) response = self._request_metadata_type_list_view() self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual( - response.data['results'][0]['label'], TEST_METADATA_TYPE_LABEL + response.data['results'][0]['label'], + self.test_metadata_type.label ) diff --git a/mayan/apps/metadata/tests/test_events.py b/mayan/apps/metadata/tests/test_events.py index fa8b759bd8..41b7905870 100644 --- a/mayan/apps/metadata/tests/test_events.py +++ b/mayan/apps/metadata/tests/test_events.py @@ -12,10 +12,12 @@ from ..permissions import ( permission_metadata_type_create, permission_metadata_type_edit ) -from .mixins import MetadataTestsMixin +from .mixins import MetadataTestMixin, MetadataTypeTestMixin -class MetadataTypeEventsTestCase(MetadataTestsMixin, GenericViewTestCase): +class MetadataTypeEventsTestCase( + MetadataTestMixin, MetadataTypeTestMixin, GenericViewTestCase +): def test_metadata_type_create_event_no_permissions(self): Action.objects.all().delete() diff --git a/mayan/apps/metadata/tests/test_models.py b/mayan/apps/metadata/tests/test_models.py index 7aea6dc03f..3881aa04b9 100644 --- a/mayan/apps/metadata/tests/test_models.py +++ b/mayan/apps/metadata/tests/test_models.py @@ -20,6 +20,7 @@ from .mixins import MetadataTypeTestMixin class MetadataTestCase(DocumentTestMixin, MetadataTypeTestMixin, BaseTestCase): def setUp(self): super(MetadataTestCase, self).setUp() + self._create_test_metadata_type() self.test_document_type.metadata.create( metadata_type=self.test_metadata_type ) @@ -32,7 +33,12 @@ class MetadataTestCase(DocumentTestMixin, MetadataTypeTestMixin, BaseTestCase): document_metadata.full_clean() document_metadata.save() - self.assertEqual(self.test_document.metadata_value_of.test, None) + self.assertEqual( + getattr( + self.test_document.metadata_value_of, + self.test_metadata_type.name + ), None + ) def test_default(self): self.test_metadata_type.default = TEST_DEFAULT_VALUE @@ -46,7 +52,10 @@ class MetadataTestCase(DocumentTestMixin, MetadataTypeTestMixin, BaseTestCase): document_metadata.save() self.assertEqual( - self.test_document.metadata_value_of.test, TEST_DEFAULT_VALUE + getattr( + self.test_document.metadata_value_of, + self.test_metadata_type.name + ), TEST_DEFAULT_VALUE ) def test_lookup_with_incorrect_value(self): @@ -76,7 +85,10 @@ class MetadataTestCase(DocumentTestMixin, MetadataTypeTestMixin, BaseTestCase): document_metadata.save() self.assertEqual( - self.test_document.metadata_value_of.test, TEST_CORRECT_LOOKUP_VALUE + getattr( + self.test_document.metadata_value_of, + self.test_metadata_type.name + ), TEST_CORRECT_LOOKUP_VALUE ) def test_empty_optional_lookup(self): @@ -112,7 +124,12 @@ class MetadataTestCase(DocumentTestMixin, MetadataTypeTestMixin, BaseTestCase): document_metadata.full_clean() document_metadata.save() - self.assertEqual(self.test_document.metadata_value_of.test, TEST_VALID_DATE) + self.assertEqual( + getattr( + self.test_document.metadata_value_of, + self.test_metadata_type.name + ), TEST_VALID_DATE + ) def test_parsing(self): self.test_metadata_type.parser = TEST_DATE_PARSER @@ -133,7 +150,10 @@ class MetadataTestCase(DocumentTestMixin, MetadataTypeTestMixin, BaseTestCase): document_metadata.save() self.assertEqual( - self.test_document.metadata_value_of.test, TEST_PARSED_VALID_DATE + getattr( + self.test_document.metadata_value_of, + self.test_metadata_type.name + ), TEST_PARSED_VALID_DATE ) def test_required_metadata(self): diff --git a/mayan/apps/metadata/tests/test_views.py b/mayan/apps/metadata/tests/test_views.py index 43b8b87b9e..e159f05623 100644 --- a/mayan/apps/metadata/tests/test_views.py +++ b/mayan/apps/metadata/tests/test_views.py @@ -20,11 +20,10 @@ from ..permissions import ( from .literals import ( TEST_DOCUMENT_METADATA_VALUE_2, TEST_METADATA_TYPE_LABEL, - TEST_METADATA_TYPE_LABEL_2, TEST_METADATA_TYPE_LABEL_EDITED, - TEST_METADATA_TYPE_NAME, TEST_METADATA_TYPE_NAME_2, - TEST_METADATA_TYPE_NAME_EDITED, TEST_METADATA_VALUE_EDITED + TEST_METADATA_TYPE_LABEL_2, TEST_METADATA_TYPE_NAME, + TEST_METADATA_TYPE_NAME_2, TEST_METADATA_VALUE_EDITED ) -from .mixins import MetadataTestsMixin +from .mixins import MetadataTypeTestMixin, MetadataTestMixin class DocumentMetadataTestCase(GenericDocumentViewTestCase): @@ -333,44 +332,43 @@ class DocumentMetadataTestCase(GenericDocumentViewTestCase): ) -class MetadataTypeViewTestCase(DocumentTestMixin, MetadataTestsMixin, GenericViewTestCase): +class MetadataTypeViewTestCase( + DocumentTestMixin, MetadataTestMixin, MetadataTypeTestMixin, + GenericViewTestCase +): auto_create_document_type = False auto_upload_document = False def test_metadata_type_create_view_no_permission(self): + metadata_type_count = MetadataType.objects.count() + response = self._request_test_metadata_type_create_view() self.assertEqual(response.status_code, 403) + self.assertEqual( + MetadataType.objects.count(), metadata_type_count + ) + def test_metadata_type_create_view_with_access(self): self.grant_permission(permission=permission_metadata_type_create) + metadata_type_count = MetadataType.objects.count() response = self._request_test_metadata_type_create_view() self.assertEqual(response.status_code, 302) - self.assertQuerysetEqual( - qs=MetadataType.objects.values('label', 'name'), - values=[ - { - 'label': TEST_METADATA_TYPE_LABEL, - 'name': TEST_METADATA_TYPE_NAME - } - ], transform=dict + self.assertEqual( + MetadataType.objects.count(), metadata_type_count + 1 ) def test_metadata_type_delete_view_no_permission(self): self._create_test_metadata_type() + metadata_type_count = MetadataType.objects.count() response = self._request_test_metadata_type_delete_view() self.assertEqual(response.status_code, 404) - self.assertQuerysetEqual( - qs=MetadataType.objects.values('label', 'name'), - values=[ - { - 'label': TEST_METADATA_TYPE_LABEL, - 'name': TEST_METADATA_TYPE_NAME - } - ], transform=dict + self.assertEqual( + MetadataType.objects.count(), metadata_type_count ) def test_metadata_type_delete_view_with_access(self): @@ -380,26 +378,29 @@ class MetadataTypeViewTestCase(DocumentTestMixin, MetadataTestsMixin, GenericVie obj=self.test_metadata_type, permission=permission_metadata_type_delete ) + metadata_type_count = MetadataType.objects.count() response = self._request_test_metadata_type_delete_view() self.assertEqual(response.status_code, 302) - self.assertEqual(MetadataType.objects.count(), 0) + self.assertEqual( + MetadataType.objects.count(), metadata_type_count - 1 + ) def test_metadata_type_edit_view_no_permission(self): self._create_test_metadata_type() + metadata_type_values = self._model_instance_to_dictionary( + instance=self.test_metadata_type + ) response = self._request_test_metadata_type_edit_view() self.assertEqual(response.status_code, 404) - self.assertQuerysetEqual( - qs=MetadataType.objects.values('label', 'name'), - values=[ - { - 'label': TEST_METADATA_TYPE_LABEL, - 'name': TEST_METADATA_TYPE_NAME - } - ], transform=dict + self.test_metadata_type.refresh_from_db() + self.assertEqual( + self._model_instance_to_dictionary( + instance=self.test_metadata_type + ), metadata_type_values ) def test_metadata_type_edit_view_with_access(self): @@ -409,18 +410,18 @@ class MetadataTypeViewTestCase(DocumentTestMixin, MetadataTestsMixin, GenericVie obj=self.test_metadata_type, permission=permission_metadata_type_edit ) + metadata_type_values = self._model_instance_to_dictionary( + instance=self.test_metadata_type + ) response = self._request_test_metadata_type_edit_view() self.assertEqual(response.status_code, 302) - self.assertQuerysetEqual( - qs=MetadataType.objects.values('label', 'name'), - values=[ - { - 'label': TEST_METADATA_TYPE_LABEL_EDITED, - 'name': TEST_METADATA_TYPE_NAME_EDITED - } - ], transform=dict + self.test_metadata_type.refresh_from_db() + self.assertNotEqual( + self._model_instance_to_dictionary( + instance=self.test_metadata_type + ), metadata_type_values ) def test_metadata_type_list_view_no_permission(self): diff --git a/mayan/apps/metadata/tests/test_wizard_steps.py b/mayan/apps/metadata/tests/test_wizard_steps.py index 809297c7fc..3529fffc7c 100644 --- a/mayan/apps/metadata/tests/test_wizard_steps.py +++ b/mayan/apps/metadata/tests/test_wizard_steps.py @@ -29,7 +29,7 @@ class DocumentUploadMetadataTestCase(MetadataTypeTestMixin, GenericDocumentViewT enabled=True, label=TEST_SOURCE_LABEL, uncompress=TEST_SOURCE_UNCOMPRESS_N ) - + self._create_test_metadata_type() self.test_document_type.metadata.create( metadata_type=self.test_metadata_type, required=True )