Convert metadata tests to use fixtures
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
This commit is contained in:
@@ -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'
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
@@ -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
|
||||
)
|
||||
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user