diff --git a/mayan/apps/metadata/tests/literals.py b/mayan/apps/metadata/tests/literals.py new file mode 100644 index 0000000000..a37a5106b6 --- /dev/null +++ b/mayan/apps/metadata/tests/literals.py @@ -0,0 +1,13 @@ +from __future__ import unicode_literals + +TEST_CORRECT_LOOKUP_VALUE = '1' +TEST_DATE_PARSER = 'metadata.parsers.DateParser' +TEST_DATE_VALIDATOR = 'metadata.validators.DateValidator' +TEST_DEFAULT_VALUE = 'test' +TEST_INCORRECT_LOOKUP_VALUE = '0' +TEST_INVALID_DATE = '___________' +TEST_LOOKUP_TEMPLATE = '1,2,3' +TEST_METADATA_TYPE_NAME = 'test' +TEST_METADATA_TYPE_LABEL = 'test' +TEST_PARSED_VALID_DATE = '2001-01-01' +TEST_VALID_DATE = '2001-1-1' diff --git a/mayan/apps/metadata/tests/test_models.py b/mayan/apps/metadata/tests/test_models.py index a7197bc0fe..4a3d9d1a8a 100644 --- a/mayan/apps/metadata/tests/test_models.py +++ b/mayan/apps/metadata/tests/test_models.py @@ -9,28 +9,25 @@ from documents.tests import TEST_SMALL_DOCUMENT_PATH, TEST_DOCUMENT_TYPE from ..models import MetadataType, DocumentMetadata -TEST_DEFAULT_VALUE = 'test' -TEST_LOOKUP_TEMPLATE = '1,2,3' -TEST_INCORRECT_LOOKUP_VALUE = '0' -TEST_CORRECT_LOOKUP_VALUE = '1' -TEST_DATE_VALIDATOR = 'metadata.validators.DateValidator' -TEST_DATE_PARSER = 'metadata.parsers.DateParser' -TEST_INVALID_DATE = '___________' -TEST_VALID_DATE = '2001-1-1' -TEST_PARSED_VALID_DATE = '2001-01-01' +from .literals import ( + TEST_DEFAULT_VALUE, TEST_LOOKUP_TEMPLATE, TEST_INCORRECT_LOOKUP_VALUE, + TEST_CORRECT_LOOKUP_VALUE, TEST_DATE_VALIDATOR, TEST_DATE_PARSER, + TEST_METADATA_TYPE_NAME, TEST_METADATA_TYPE_LABEL, TEST_INVALID_DATE, + TEST_VALID_DATE, TEST_PARSED_VALID_DATE +) @override_settings(OCR_AUTO_OCR=False) class MetadataTestCase(TestCase): def setUp(self): - self.metadata_type = MetadataType.objects.create( - name='test', label='test' - ) - self.document_type = DocumentType.objects.create( label=TEST_DOCUMENT_TYPE ) + self.metadata_type = MetadataType.objects.create( + name=TEST_METADATA_TYPE_NAME, label=TEST_METADATA_TYPE_LABEL + ) + self.document_type.metadata.create(metadata_type=self.metadata_type) with open(TEST_SMALL_DOCUMENT_PATH) as file_object: @@ -63,13 +60,16 @@ class MetadataTestCase(TestCase): document_metadata.full_clean() document_metadata.save() - self.assertEqual(self.document.metadata_value_of.test, TEST_DEFAULT_VALUE) + self.assertEqual( + self.document.metadata_value_of.test, TEST_DEFAULT_VALUE + ) def test_lookup(self): self.metadata_type.lookup = TEST_LOOKUP_TEMPLATE document_metadata = DocumentMetadata( - document=self.document, metadata_type=self.metadata_type, value=TEST_INCORRECT_LOOKUP_VALUE + document=self.document, metadata_type=self.metadata_type, + value=TEST_INCORRECT_LOOKUP_VALUE ) with self.assertRaises(ValidationError): @@ -82,13 +82,16 @@ class MetadataTestCase(TestCase): document_metadata.full_clean() document_metadata.save() - self.assertEqual(self.document.metadata_value_of.test, TEST_CORRECT_LOOKUP_VALUE) + self.assertEqual( + self.document.metadata_value_of.test, TEST_CORRECT_LOOKUP_VALUE + ) def test_validation(self): self.metadata_type.validation = TEST_DATE_VALIDATOR document_metadata = DocumentMetadata( - document=self.document, metadata_type=self.metadata_type, value=TEST_INVALID_DATE + document=self.document, metadata_type=self.metadata_type, + value=TEST_INVALID_DATE ) with self.assertRaises(ValidationError): @@ -107,7 +110,8 @@ class MetadataTestCase(TestCase): self.metadata_type.parser = TEST_DATE_PARSER document_metadata = DocumentMetadata( - document=self.document, metadata_type=self.metadata_type, value=TEST_INVALID_DATE + document=self.document, metadata_type=self.metadata_type, + value=TEST_INVALID_DATE ) with self.assertRaises(ValidationError): @@ -120,4 +124,6 @@ class MetadataTestCase(TestCase): document_metadata.full_clean() document_metadata.save() - self.assertEqual(self.document.metadata_value_of.test, TEST_PARSED_VALID_DATE) + self.assertEqual( + self.document.metadata_value_of.test, TEST_PARSED_VALID_DATE + ) diff --git a/mayan/apps/metadata/tests/test_views.py b/mayan/apps/metadata/tests/test_views.py new file mode 100644 index 0000000000..b5e16bd52b --- /dev/null +++ b/mayan/apps/metadata/tests/test_views.py @@ -0,0 +1,85 @@ +from __future__ import unicode_literals + +from django.contrib.auth.models import User +from django.core.files import File +from django.core.urlresolvers import reverse +from django.test.client import Client +from django.test import TestCase + +from documents.models import DocumentType +from documents.tests.literals import ( + TEST_ADMIN_PASSWORD, TEST_ADMIN_USERNAME, TEST_ADMIN_EMAIL, + TEST_DOCUMENT_TYPE, TEST_SMALL_DOCUMENT_PATH +) + +from ..models import MetadataType, DocumentMetadata + +from .literals import TEST_METADATA_TYPE_NAME, TEST_METADATA_TYPE_LABEL + + +class DocumentMetadataTestCase(TestCase): + def setUp(self): + self.admin_user = User.objects.create_superuser( + username=TEST_ADMIN_USERNAME, email=TEST_ADMIN_EMAIL, + password=TEST_ADMIN_PASSWORD + ) + self.client = Client() + # Login the admin user + logged_in = self.client.login( + username=TEST_ADMIN_USERNAME, password=TEST_ADMIN_PASSWORD + ) + self.assertTrue(logged_in) + self.assertTrue(self.admin_user.is_authenticated()) + + self.document_type = DocumentType.objects.create( + label=TEST_DOCUMENT_TYPE + ) + + self.metadata_type = MetadataType.objects.create( + name=TEST_METADATA_TYPE_NAME, label=TEST_METADATA_TYPE_LABEL + ) + + self.document_type.metadata.create(metadata_type=self.metadata_type) + + with open(TEST_SMALL_DOCUMENT_PATH) as file_object: + self.document = self.document_type.new_document( + file_object=File(file_object) + ) + + def tearDown(self): + self.document_type.delete() + self.admin_user.delete() + self.metadata_type.delete() + + def test_remove_metadata_view(self): + document_metadata = self.document.metadata.create( + metadata_type=self.metadata_type, value='' + ) + + self.assertEqual(len(self.document.metadata.all()), 1) + + # Test display of metadata removal form + response = self.client.get( + reverse( + 'metadata:metadata_remove', args=(self.document.pk,), + ) + ) + + self.assertContains(response, 'emove', status_code=200) + + # Test post to metadata removal view + response = self.client.post( + reverse( + 'metadata:metadata_remove', args=(self.document.pk,), + ), data={ + 'form-0-id': document_metadata.metadata_type.pk, + 'form-0-update': True, + 'form-TOTAL_FORMS': '1', + 'form-INITIAL_FORMS': '0', + 'form-MAX_NUM_FORMS': '', + }, follow=True + ) + + self.assertContains(response, 'Success', status_code=200) + + self.assertEqual(len(self.document.metadata.all()), 0)