Convert metadata tests to use fixtures

Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
This commit is contained in:
Roberto Rosario
2019-05-10 19:31:20 -04:00
parent 7cf8cd2f28
commit 578c1b2f07
7 changed files with 136 additions and 76 deletions
+4
View File
@@ -9,6 +9,10 @@ TEST_DEFAULT_VALUE = 'test'
TEST_INCORRECT_LOOKUP_VALUE = '0' TEST_INCORRECT_LOOKUP_VALUE = '0'
TEST_INVALID_DATE = '___________' TEST_INVALID_DATE = '___________'
TEST_LOOKUP_TEMPLATE = '1,2,3' 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 = 'test metadata type'
TEST_METADATA_TYPE_LABEL_2 = 'test metadata type label 2' TEST_METADATA_TYPE_LABEL_2 = 'test metadata type label 2'
TEST_METADATA_TYPE_LABEL_EDITED = 'test metadata type label edited' TEST_METADATA_TYPE_LABEL_EDITED = 'test metadata type label edited'
+19 -10
View File
@@ -1,33 +1,42 @@
from __future__ import unicode_literals from __future__ import unicode_literals
import copy
from ..models import MetadataType from ..models import MetadataType
from .literals import ( from .literals import (
TEST_METADATA_TYPE_LABEL, TEST_METADATA_TYPE_LABEL_EDITED, TEST_METADATA_TYPE_LABEL_EDITED, TEST_METADATA_TYPE_NAME_EDITED,
TEST_METADATA_TYPE_NAME, TEST_METADATA_TYPE_NAME_EDITED TEST_METADATA_TYPES_FIXTURES
) )
class MetadataTypeTestMixin(object): class MetadataTypeTestMixin(object):
test_metadata_types = []
def setUp(self): def setUp(self):
super(MetadataTypeTestMixin, self).setUp() super(MetadataTypeTestMixin, self).setUp()
self.test_metadata_type = MetadataType.objects.create( self.test_metadata_types_fixtures = copy.copy(
name=TEST_METADATA_TYPE_NAME, label=TEST_METADATA_TYPE_LABEL TEST_METADATA_TYPES_FIXTURES
) )
class MetadataTestsMixin(object):
def _create_test_metadata_type(self): def _create_test_metadata_type(self):
self.test_metadata_type = MetadataType.objects.create( self.test_metadata_type = MetadataType.objects.create(
label=TEST_METADATA_TYPE_LABEL, **self.test_metadata_types_fixtures.pop()
name=TEST_METADATA_TYPE_NAME )
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): def _request_test_metadata_type_create_view(self):
return self.post( return self.post(
viewname='metadata:setup_metadata_type_create', data={ viewname='metadata:setup_metadata_type_create', data={
'label': TEST_METADATA_TYPE_LABEL, **self.test_metadata_types_fixtures.pop()
'name': TEST_METADATA_TYPE_NAME
} }
) )
+44 -20
View File
@@ -18,17 +18,13 @@ from ..permissions import (
from .literals import ( from .literals import (
TEST_METADATA_TYPE_LABEL, TEST_METADATA_TYPE_LABEL_2, TEST_METADATA_TYPE_LABEL, TEST_METADATA_TYPE_LABEL_2,
TEST_METADATA_TYPE_NAME, TEST_METADATA_TYPE_NAME_2, TEST_METADATA_VALUE, TEST_METADATA_TYPE_NAME, TEST_METADATA_TYPE_NAME_2,
TEST_METADATA_VALUE_EDITED TEST_METADATA_VALUE, TEST_METADATA_VALUE_EDITED
) )
from .mixins import MetadataTypeTestMixin
class MetadataTypeAPITestCase(BaseAPITestCase): class MetadataTypeAPITestCase(MetadataTypeTestMixin, BaseAPITestCase):
def _create_test_metadata_type(self):
self.test_metadata_type = MetadataType.objects.create(
label=TEST_METADATA_TYPE_LABEL, name=TEST_METADATA_TYPE_NAME
)
def _request_test_metadata_type_create_view(self): def _request_test_metadata_type_create_view(self):
return self.post( return self.post(
viewname='rest_api:metadatatype-list', data={ 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.status_code, status.HTTP_200_OK)
self.assertEqual( 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): 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): def test_metadata_type_patch_view_no_access(self):
self._create_test_metadata_type() 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() response = self._request_test_metadata_type_edit_view_via_patch()
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
self.test_metadata_type.refresh_from_db() self.test_metadata_type.refresh_from_db()
self.assertEqual(self.test_metadata_type.label, TEST_METADATA_TYPE_LABEL) self.assertEqual(
self.assertEqual(self.test_metadata_type.name, TEST_METADATA_TYPE_NAME) self._model_instance_to_dictionary(
instance=self.test_metadata_type
), metadata_type_values
)
def test_metadata_type_patch_view_with_access(self): def test_metadata_type_patch_view_with_access(self):
self._create_test_metadata_type() self._create_test_metadata_type()
metadata_type_values = self._model_instance_to_dictionary(
instance=self.test_metadata_type
)
self.grant_access( self.grant_access(
obj=self.test_metadata_type, permission=permission_metadata_type_edit 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.assertEqual(response.status_code, status.HTTP_200_OK)
self.test_metadata_type.refresh_from_db() self.test_metadata_type.refresh_from_db()
self.assertEqual(self.test_metadata_type.label, TEST_METADATA_TYPE_LABEL_2) self.assertNotEqual(
self.assertEqual(self.test_metadata_type.name, TEST_METADATA_TYPE_NAME_2) self._model_instance_to_dictionary(
instance=self.test_metadata_type
), metadata_type_values
)
def _request_test_metadata_type_edit_view_via_put(self): def _request_test_metadata_type_edit_view_via_put(self):
return self.put( return self.put(
@@ -147,25 +155,39 @@ class MetadataTypeAPITestCase(BaseAPITestCase):
def test_metadata_type_put_view_no_access(self): def test_metadata_type_put_view_no_access(self):
self._create_test_metadata_type() 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() response = self._request_test_metadata_type_edit_view_via_put()
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
self.test_metadata_type.refresh_from_db() self.test_metadata_type.refresh_from_db()
self.assertEqual(self.test_metadata_type.label, TEST_METADATA_TYPE_LABEL) self.assertEqual(
self.assertEqual(self.test_metadata_type.name, TEST_METADATA_TYPE_NAME) self._model_instance_to_dictionary(
instance=self.test_metadata_type
), metadata_type_values
)
def test_metadata_type_put_view_with_access(self): def test_metadata_type_put_view_with_access(self):
self._create_test_metadata_type() self._create_test_metadata_type()
metadata_type_values = self._model_instance_to_dictionary(
instance=self.test_metadata_type
)
self.grant_access( 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() response = self._request_test_metadata_type_edit_view_via_put()
self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(response.status_code, status.HTTP_200_OK)
self.test_metadata_type.refresh_from_db() self.test_metadata_type.refresh_from_db()
self.assertEqual(self.test_metadata_type.label, TEST_METADATA_TYPE_LABEL_2) self.assertNotEqual(
self.assertEqual(self.test_metadata_type.name, TEST_METADATA_TYPE_NAME_2) self._model_instance_to_dictionary(
instance=self.test_metadata_type
), metadata_type_values
)
def _request_metadata_type_list_view(self): def _request_metadata_type_list_view(self):
return self.get(viewname='rest_api:metadatatype-list') return self.get(viewname='rest_api:metadatatype-list')
@@ -180,13 +202,15 @@ class MetadataTypeAPITestCase(BaseAPITestCase):
def test_metadata_type_list_view_with_access(self): def test_metadata_type_list_view_with_access(self):
self._create_test_metadata_type() self._create_test_metadata_type()
self.grant_access( 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() response = self._request_metadata_type_list_view()
self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertEqual( self.assertEqual(
response.data['results'][0]['label'], TEST_METADATA_TYPE_LABEL response.data['results'][0]['label'],
self.test_metadata_type.label
) )
+4 -2
View File
@@ -12,10 +12,12 @@ from ..permissions import (
permission_metadata_type_create, permission_metadata_type_edit 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): def test_metadata_type_create_event_no_permissions(self):
Action.objects.all().delete() Action.objects.all().delete()
+25 -5
View File
@@ -20,6 +20,7 @@ from .mixins import MetadataTypeTestMixin
class MetadataTestCase(DocumentTestMixin, MetadataTypeTestMixin, BaseTestCase): class MetadataTestCase(DocumentTestMixin, MetadataTypeTestMixin, BaseTestCase):
def setUp(self): def setUp(self):
super(MetadataTestCase, self).setUp() super(MetadataTestCase, self).setUp()
self._create_test_metadata_type()
self.test_document_type.metadata.create( self.test_document_type.metadata.create(
metadata_type=self.test_metadata_type metadata_type=self.test_metadata_type
) )
@@ -32,7 +33,12 @@ class MetadataTestCase(DocumentTestMixin, MetadataTypeTestMixin, BaseTestCase):
document_metadata.full_clean() document_metadata.full_clean()
document_metadata.save() 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): def test_default(self):
self.test_metadata_type.default = TEST_DEFAULT_VALUE self.test_metadata_type.default = TEST_DEFAULT_VALUE
@@ -46,7 +52,10 @@ class MetadataTestCase(DocumentTestMixin, MetadataTypeTestMixin, BaseTestCase):
document_metadata.save() document_metadata.save()
self.assertEqual( 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): def test_lookup_with_incorrect_value(self):
@@ -76,7 +85,10 @@ class MetadataTestCase(DocumentTestMixin, MetadataTypeTestMixin, BaseTestCase):
document_metadata.save() document_metadata.save()
self.assertEqual( 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): def test_empty_optional_lookup(self):
@@ -112,7 +124,12 @@ class MetadataTestCase(DocumentTestMixin, MetadataTypeTestMixin, BaseTestCase):
document_metadata.full_clean() document_metadata.full_clean()
document_metadata.save() 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): def test_parsing(self):
self.test_metadata_type.parser = TEST_DATE_PARSER self.test_metadata_type.parser = TEST_DATE_PARSER
@@ -133,7 +150,10 @@ class MetadataTestCase(DocumentTestMixin, MetadataTypeTestMixin, BaseTestCase):
document_metadata.save() document_metadata.save()
self.assertEqual( 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): def test_required_metadata(self):
+39 -38
View File
@@ -20,11 +20,10 @@ from ..permissions import (
from .literals import ( from .literals import (
TEST_DOCUMENT_METADATA_VALUE_2, TEST_METADATA_TYPE_LABEL, TEST_DOCUMENT_METADATA_VALUE_2, TEST_METADATA_TYPE_LABEL,
TEST_METADATA_TYPE_LABEL_2, TEST_METADATA_TYPE_LABEL_EDITED, TEST_METADATA_TYPE_LABEL_2, TEST_METADATA_TYPE_NAME,
TEST_METADATA_TYPE_NAME, TEST_METADATA_TYPE_NAME_2, TEST_METADATA_TYPE_NAME_2, TEST_METADATA_VALUE_EDITED
TEST_METADATA_TYPE_NAME_EDITED, TEST_METADATA_VALUE_EDITED
) )
from .mixins import MetadataTestsMixin from .mixins import MetadataTypeTestMixin, MetadataTestMixin
class DocumentMetadataTestCase(GenericDocumentViewTestCase): 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_create_document_type = False
auto_upload_document = False auto_upload_document = False
def test_metadata_type_create_view_no_permission(self): def test_metadata_type_create_view_no_permission(self):
metadata_type_count = MetadataType.objects.count()
response = self._request_test_metadata_type_create_view() response = self._request_test_metadata_type_create_view()
self.assertEqual(response.status_code, 403) self.assertEqual(response.status_code, 403)
self.assertEqual(
MetadataType.objects.count(), metadata_type_count
)
def test_metadata_type_create_view_with_access(self): def test_metadata_type_create_view_with_access(self):
self.grant_permission(permission=permission_metadata_type_create) self.grant_permission(permission=permission_metadata_type_create)
metadata_type_count = MetadataType.objects.count()
response = self._request_test_metadata_type_create_view() response = self._request_test_metadata_type_create_view()
self.assertEqual(response.status_code, 302) self.assertEqual(response.status_code, 302)
self.assertQuerysetEqual( self.assertEqual(
qs=MetadataType.objects.values('label', 'name'), MetadataType.objects.count(), metadata_type_count + 1
values=[
{
'label': TEST_METADATA_TYPE_LABEL,
'name': TEST_METADATA_TYPE_NAME
}
], transform=dict
) )
def test_metadata_type_delete_view_no_permission(self): def test_metadata_type_delete_view_no_permission(self):
self._create_test_metadata_type() self._create_test_metadata_type()
metadata_type_count = MetadataType.objects.count()
response = self._request_test_metadata_type_delete_view() response = self._request_test_metadata_type_delete_view()
self.assertEqual(response.status_code, 404) self.assertEqual(response.status_code, 404)
self.assertQuerysetEqual( self.assertEqual(
qs=MetadataType.objects.values('label', 'name'), MetadataType.objects.count(), metadata_type_count
values=[
{
'label': TEST_METADATA_TYPE_LABEL,
'name': TEST_METADATA_TYPE_NAME
}
], transform=dict
) )
def test_metadata_type_delete_view_with_access(self): def test_metadata_type_delete_view_with_access(self):
@@ -380,26 +378,29 @@ class MetadataTypeViewTestCase(DocumentTestMixin, MetadataTestsMixin, GenericVie
obj=self.test_metadata_type, obj=self.test_metadata_type,
permission=permission_metadata_type_delete permission=permission_metadata_type_delete
) )
metadata_type_count = MetadataType.objects.count()
response = self._request_test_metadata_type_delete_view() response = self._request_test_metadata_type_delete_view()
self.assertEqual(response.status_code, 302) 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): def test_metadata_type_edit_view_no_permission(self):
self._create_test_metadata_type() 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() response = self._request_test_metadata_type_edit_view()
self.assertEqual(response.status_code, 404) self.assertEqual(response.status_code, 404)
self.assertQuerysetEqual( self.test_metadata_type.refresh_from_db()
qs=MetadataType.objects.values('label', 'name'), self.assertEqual(
values=[ self._model_instance_to_dictionary(
{ instance=self.test_metadata_type
'label': TEST_METADATA_TYPE_LABEL, ), metadata_type_values
'name': TEST_METADATA_TYPE_NAME
}
], transform=dict
) )
def test_metadata_type_edit_view_with_access(self): def test_metadata_type_edit_view_with_access(self):
@@ -409,18 +410,18 @@ class MetadataTypeViewTestCase(DocumentTestMixin, MetadataTestsMixin, GenericVie
obj=self.test_metadata_type, obj=self.test_metadata_type,
permission=permission_metadata_type_edit 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() response = self._request_test_metadata_type_edit_view()
self.assertEqual(response.status_code, 302) self.assertEqual(response.status_code, 302)
self.assertQuerysetEqual( self.test_metadata_type.refresh_from_db()
qs=MetadataType.objects.values('label', 'name'), self.assertNotEqual(
values=[ self._model_instance_to_dictionary(
{ instance=self.test_metadata_type
'label': TEST_METADATA_TYPE_LABEL_EDITED, ), metadata_type_values
'name': TEST_METADATA_TYPE_NAME_EDITED
}
], transform=dict
) )
def test_metadata_type_list_view_no_permission(self): def test_metadata_type_list_view_no_permission(self):
@@ -29,7 +29,7 @@ class DocumentUploadMetadataTestCase(MetadataTypeTestMixin, GenericDocumentViewT
enabled=True, label=TEST_SOURCE_LABEL, enabled=True, label=TEST_SOURCE_LABEL,
uncompress=TEST_SOURCE_UNCOMPRESS_N uncompress=TEST_SOURCE_UNCOMPRESS_N
) )
self._create_test_metadata_type()
self.test_document_type.metadata.create( self.test_document_type.metadata.create(
metadata_type=self.test_metadata_type, required=True metadata_type=self.test_metadata_type, required=True
) )