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

View File

@@ -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'

View File

@@ -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()
}
)

View File

@@ -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
)

View File

@@ -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()

View File

@@ -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):

View File

@@ -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):

View File

@@ -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
)