diff --git a/mayan/apps/authentication/tests.py b/mayan/apps/authentication/tests_views.py similarity index 100% rename from mayan/apps/authentication/tests.py rename to mayan/apps/authentication/tests_views.py diff --git a/mayan/apps/document_indexing/tests.py b/mayan/apps/document_indexing/test_models.py similarity index 94% rename from mayan/apps/document_indexing/tests.py rename to mayan/apps/document_indexing/test_models.py index b9d7e2d0a8..e5d82da41a 100644 --- a/mayan/apps/document_indexing/tests.py +++ b/mayan/apps/document_indexing/test_models.py @@ -12,7 +12,11 @@ from .models import Index, IndexInstanceNode, IndexTemplateNode class IndexTestCase(TestCase): def setUp(self): - self.document_type = DocumentType.objects.create(name=TEST_DOCUMENT_TYPE) + self.document_type = DocumentType.objects.create(label=TEST_DOCUMENT_TYPE) + + ocr_settings = self.document_type.ocr_settings + ocr_settings.auto_ocr = False + ocr_settings.save() with open(TEST_SMALL_DOCUMENT_PATH) as file_object: self.document = self.document_type.new_document(file_object=File(file_object)) diff --git a/mayan/apps/document_signatures/tests.py b/mayan/apps/document_signatures/test_models.py similarity index 95% rename from mayan/apps/document_signatures/tests.py rename to mayan/apps/document_signatures/test_models.py index 501c75996e..8c9f7c7d84 100644 --- a/mayan/apps/document_signatures/tests.py +++ b/mayan/apps/document_signatures/test_models.py @@ -7,6 +7,7 @@ from django.core.files.base import File from django.test import TestCase from documents.models import Document, DocumentType +from documents.test_models import TEST_DOCUMENT_TYPE from django_gpg.literals import SIGNATURE_STATE_VALID from django_gpg.runtime import gpg @@ -20,7 +21,7 @@ TEST_KEY_FILE = os.path.join(settings.BASE_DIR, 'contrib', 'sample_documents', ' class DocumentTestCase(TestCase): def setUp(self): - self.document_type = DocumentType.objects.create(name='test doc type') + self.document_type = DocumentType.objects.create(label=TEST_DOCUMENT_TYPE) ocr_settings = self.document_type.ocr_settings ocr_settings.auto_ocr = False diff --git a/mayan/apps/documents/search.py b/mayan/apps/documents/search.py index d77f39f031..7cf55a064e 100644 --- a/mayan/apps/documents/search.py +++ b/mayan/apps/documents/search.py @@ -8,7 +8,7 @@ from .permissions import permission_document_view document_search = SearchModel('documents', 'Document', permission=permission_document_view, serializer_string='documents.serializers.DocumentSerializer') -document_search.add_model_field(field='document_type__name', label=_('Document type')) +document_search.add_model_field(field='document_type__label', label=_('Document type')) document_search.add_model_field(field='versions__mimetype', label=_('MIME type')) document_search.add_model_field(field='label', label=_('Label')) document_search.add_model_field(field='description', label=_('Description')) diff --git a/mayan/apps/documents/test_api.py b/mayan/apps/documents/test_api.py new file mode 100644 index 0000000000..1cf2f12fbe --- /dev/null +++ b/mayan/apps/documents/test_api.py @@ -0,0 +1,108 @@ +# -*- coding: utf-8 -*- + +from __future__ import unicode_literals + +from json import loads +import os + +from django.conf import settings +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 rest_framework import status +from rest_framework.test import APIClient + +from .models import Document, DocumentType +from .test_models import ( + TEST_ADMIN_PASSWORD, TEST_ADMIN_USERNAME, TEST_ADMIN_EMAIL, + TEST_SMALL_DOCUMENT_FILENAME, TEST_NON_ASCII_DOCUMENT_FILENAME, + TEST_NON_ASCII_COMPRESSED_DOCUMENT_FILENAME, TEST_DOCUMENT_PATH, + TEST_SIGNED_DOCUMENT_PATH, TEST_SMALL_DOCUMENT_PATH, + TEST_NON_ASCII_DOCUMENT_PATH, TEST_NON_ASCII_COMPRESSED_DOCUMENT_PATH, + TEST_DOCUMENT_DESCRIPTION, TEST_DOCUMENT_TYPE +) + + +class DocumentAPICreateDocumentTestCase(TestCase): + """ + Functional test to make sure all the moving parts to create a document from + the API are working correctly + """ + + def setUp(self): + self.admin_user = User.objects.create_superuser(username=TEST_ADMIN_USERNAME, email=TEST_ADMIN_EMAIL, password=TEST_ADMIN_PASSWORD) + self.document_type = DocumentType.objects.create(label=TEST_DOCUMENT_TYPE) + + ocr_settings = self.document_type.ocr_settings + ocr_settings.auto_ocr = False + ocr_settings.save() + + def test_uploading_a_document_using_token_auth(self): + # Get the an user token + token_client = APIClient() + response = token_client.post(reverse('auth_token_obtain'), {'username': TEST_ADMIN_USERNAME, 'password': TEST_ADMIN_PASSWORD}) + + # Be able to get authentication token + self.assertEqual(response.status_code, status.HTTP_200_OK) + + # Make sure a token was returned + self.assertTrue('token' in response.content) + + token = loads(response.content)['token'] + + # Create a new client to simulate a different request + document_client = APIClient() + + # Create a blank document with no token in the header + # TODO: Fix, must not be able to create the document with API token + # with open(TEST_SMALL_DOCUMENT_PATH) as file_descriptor: + # response = document_client.post(reverse('document-list'), {'document_type': self.document_type.pk, 'file': file_descriptor}) + + # Make sure toke authentication is working, should fail + # TODO: FIX failing test: self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) + + document_client.credentials(HTTP_AUTHORIZATION='Token ' + token) + + # Create a blank document + with open(TEST_SMALL_DOCUMENT_PATH) as file_descriptor: + document_response = document_client.post(reverse('document-list'), {'document_type': self.document_type.pk, 'file': file_descriptor}) + + self.assertEqual(document_response.status_code, status.HTTP_201_CREATED) + + # The document was created in the DB? + self.assertEqual(Document.objects.count(), 1) + + new_version_url = reverse('document-new-version', args=[Document.objects.first().pk]) + + with open(TEST_DOCUMENT_PATH) as file_descriptor: + response = document_client.post(new_version_url, {'file': file_descriptor}) + + # Make sure the document uploaded correctly + document = Document.objects.first() + self.failUnlessEqual(document.exists(), True) + self.failUnlessEqual(document.size, 272213) + + self.failUnlessEqual(document.file_mimetype, 'application/pdf') + self.failUnlessEqual(document.file_mime_encoding, 'binary') + self.failUnlessEqual(document.label, TEST_SMALL_DOCUMENT_FILENAME) + self.failUnlessEqual(document.checksum, 'c637ffab6b8bb026ed3784afdb07663fddc60099853fae2be93890852a69ecf3') + self.failUnlessEqual(document.page_count, 47) + + # Make sure we can edit the document via the API + document_url = reverse('document-detail', args=[Document.objects.first().pk]) + + response = document_client.post(document_url, {'description': 'edited test document'}) + + # self.assertTrue(document.description, 'edited test document') + + # Make sure we can delete the document via the API + response = document_client.delete(document_url) + + # The document was deleted from the the DB? + self.assertEqual(Document.objects.count(), 0) + + def tearDown(self): + self.document_type.delete() diff --git a/mayan/apps/documents/test_models.py b/mayan/apps/documents/test_models.py new file mode 100644 index 0000000000..7dd4a0eb90 --- /dev/null +++ b/mayan/apps/documents/test_models.py @@ -0,0 +1,68 @@ +# -*- coding: utf-8 -*- + +from __future__ import unicode_literals + +from json import loads +import os + +from django.conf import settings +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 rest_framework import status +from rest_framework.test import APIClient + +from .models import Document, DocumentType + +TEST_ADMIN_PASSWORD = 'test_admin_password' +TEST_ADMIN_USERNAME = 'test_admin' +TEST_ADMIN_EMAIL = 'admin@admin.com' +TEST_SMALL_DOCUMENT_FILENAME = 'title_page.png' +TEST_NON_ASCII_DOCUMENT_FILENAME = 'I18N_title_áéíóúüñÑ.png' +TEST_NON_ASCII_COMPRESSED_DOCUMENT_FILENAME = 'I18N_title_áéíóúüñÑ.png.zip' +TEST_DOCUMENT_PATH = os.path.join(settings.BASE_DIR, 'contrib', 'sample_documents', 'mayan_11_1.pdf') +TEST_SIGNED_DOCUMENT_PATH = os.path.join(settings.BASE_DIR, 'contrib', 'sample_documents', 'mayan_11_1.pdf.gpg') +TEST_SMALL_DOCUMENT_PATH = os.path.join(settings.BASE_DIR, 'contrib', 'sample_documents', TEST_SMALL_DOCUMENT_FILENAME) +TEST_NON_ASCII_DOCUMENT_PATH = os.path.join(settings.BASE_DIR, 'contrib', 'sample_documents', TEST_NON_ASCII_DOCUMENT_FILENAME) +TEST_NON_ASCII_COMPRESSED_DOCUMENT_PATH = os.path.join(settings.BASE_DIR, 'contrib', 'sample_documents', TEST_NON_ASCII_COMPRESSED_DOCUMENT_FILENAME) +TEST_DOCUMENT_DESCRIPTION = 'test description' +TEST_DOCUMENT_TYPE = 'test_document_type' + + +class DocumentTestCase(TestCase): + def setUp(self): + self.document_type = DocumentType.objects.create(label=TEST_DOCUMENT_TYPE) + + ocr_settings = self.document_type.ocr_settings + ocr_settings.auto_ocr = False + ocr_settings.save() + + with open(TEST_DOCUMENT_PATH) as file_object: + self.document = self.document_type.new_document(file_object=File(file_object), label='mayan_11_1.pdf') + + def test_document_creation(self): + self.failUnlessEqual(self.document_type.label, TEST_DOCUMENT_TYPE) + + self.failUnlessEqual(self.document.exists(), True) + self.failUnlessEqual(self.document.size, 272213) + + self.failUnlessEqual(self.document.file_mimetype, 'application/pdf') + self.failUnlessEqual(self.document.file_mime_encoding, 'binary') + self.failUnlessEqual(self.document.label, 'mayan_11_1.pdf') + self.failUnlessEqual(self.document.checksum, 'c637ffab6b8bb026ed3784afdb07663fddc60099853fae2be93890852a69ecf3') + self.failUnlessEqual(self.document.page_count, 47) + + with open(TEST_SMALL_DOCUMENT_PATH) as file_object: + self.document.new_version(file_object=File(file_object)) + + with open(TEST_SMALL_DOCUMENT_PATH) as file_object: + self.document.new_version(file_object=File(file_object), comment='test comment 1') + + self.failUnlessEqual(self.document.versions.count(), 3) + + def tearDown(self): + self.document.delete() + self.document_type.delete() diff --git a/mayan/apps/documents/test_views.py b/mayan/apps/documents/test_views.py new file mode 100644 index 0000000000..04b0fafbe9 --- /dev/null +++ b/mayan/apps/documents/test_views.py @@ -0,0 +1,99 @@ +# -*- coding: utf-8 -*- + +from __future__ import unicode_literals + +from json import loads +import os + +from django.conf import settings +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 rest_framework import status +from rest_framework.test import APIClient + +from .models import Document, DocumentType +from .test_models import ( + TEST_ADMIN_PASSWORD, TEST_ADMIN_USERNAME, TEST_ADMIN_EMAIL, + TEST_SMALL_DOCUMENT_FILENAME, TEST_NON_ASCII_DOCUMENT_FILENAME, + TEST_NON_ASCII_COMPRESSED_DOCUMENT_FILENAME, TEST_DOCUMENT_PATH, + TEST_SIGNED_DOCUMENT_PATH, TEST_SMALL_DOCUMENT_PATH, + TEST_NON_ASCII_DOCUMENT_PATH, TEST_NON_ASCII_COMPRESSED_DOCUMENT_PATH, + TEST_DOCUMENT_DESCRIPTION, TEST_DOCUMENT_TYPE +) + + +class DocumentsViewsFunctionalTestCase(TestCase): + """ + Functional tests to make sure all the moving parts after creating a + document from the frontend are working correctly + """ + + def setUp(self): + from sources.models import WebFormSource + from sources.literals import SOURCE_CHOICE_WEB_FORM + + DocumentType.objects.all().delete() # Clean up + self.document_type = DocumentType.objects.create(label=TEST_DOCUMENT_TYPE) + 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()) + # Create new webform source + self.client.post(reverse('sources:setup_source_create', args=[SOURCE_CHOICE_WEB_FORM]), {'title': 'test', 'uncompress': 'n', 'enabled': True}) + self.assertEqual(WebFormSource.objects.count(), 1) + + # Upload the test document + with open(TEST_SMALL_DOCUMENT_PATH) as file_descriptor: + self.client.post(reverse('sources:upload_interactive'), {'document-language': 'eng', 'source-file': file_descriptor, 'document_type_id': self.document_type.pk}) + self.assertEqual(Document.objects.count(), 1) + self.document = Document.objects.first() + + def tearDown(self): + self.document.delete() + self.document_type.delete() + + def test_document_view(self): + response = self.client.get(reverse('documents:document_list')) + self.assertContains(response, 'Total: 1', status_code=200) + + # test document simple view + response = self.client.get(reverse('documents:document_properties', args=[self.document.pk])) + self.assertContains(response, 'roperties for document', status_code=200) + + def test_document_type_views(self): + # Check that there are no document types + response = self.client.get(reverse('documents:document_type_list')) + self.assertContains(response, 'Total: 1', status_code=200) + + # Create a document type + response = self.client.post(reverse('documents:document_type_create'), {'name': 'test document type 2'}, follow=True) + #TODO: FIX self.assertContains(response, 'successfully', status_code=200) + + # Check that there are two document types + response = self.client.get(reverse('documents:document_type_list')) + #TODO: FIX self.assertContains(response, 'Total: 2', status_code=200) + + self.assertEqual(self.document_type.label, TEST_DOCUMENT_TYPE) + + # Edit the document type + response = self.client.post(reverse('documents:document_type_edit', args=[self.document_type.pk]), data={'name': TEST_DOCUMENT_TYPE + 'partial'}, follow=True) + #TODO: FIX self.assertContains(response, 'Document type edited successfully', status_code=200) + + # Reload document type model data + self.document = DocumentType.objects.get(pk=self.document.pk) + #TODO: FIX self.assertEqual(self.document_type.name, TEST_DOCUMENT_TYPE + 'partial') + + # Delete the document type + response = self.client.post(reverse('documents:document_type_delete', args=[self.document_type.pk]), follow=True) + #TODO: FIX self.assertContains(response, 'Document type: {0} deleted successfully'.format(self.document_type.name), status_code=200) + + # Check that there are no document types + response = self.client.get(reverse('documents:document_type_list')) + #TODO: FIX self.assertEqual(response.status_code, 200) + #TODO: FIX self.assertContains(response, 'ocument types (0)', status_code=200) diff --git a/mayan/apps/documents/tests.py b/mayan/apps/documents/tests.py deleted file mode 100644 index 3f3a4e473a..0000000000 --- a/mayan/apps/documents/tests.py +++ /dev/null @@ -1,223 +0,0 @@ -# -*- coding: utf-8 -*- - -from __future__ import unicode_literals - -from json import loads -import os - -from django.conf import settings -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 rest_framework import status -from rest_framework.test import APIClient - -from .models import Document, DocumentType - -TEST_ADMIN_PASSWORD = 'test_admin_password' -TEST_ADMIN_USERNAME = 'test_admin' -TEST_ADMIN_EMAIL = 'admin@admin.com' -TEST_SMALL_DOCUMENT_FILENAME = 'title_page.png' -TEST_NON_ASCII_DOCUMENT_FILENAME = 'I18N_title_áéíóúüñÑ.png' -TEST_NON_ASCII_COMPRESSED_DOCUMENT_FILENAME = 'I18N_title_áéíóúüñÑ.png.zip' -TEST_DOCUMENT_PATH = os.path.join(settings.BASE_DIR, 'contrib', 'sample_documents', 'mayan_11_1.pdf') -TEST_SIGNED_DOCUMENT_PATH = os.path.join(settings.BASE_DIR, 'contrib', 'sample_documents', 'mayan_11_1.pdf.gpg') -TEST_SMALL_DOCUMENT_PATH = os.path.join(settings.BASE_DIR, 'contrib', 'sample_documents', TEST_SMALL_DOCUMENT_FILENAME) -TEST_NON_ASCII_DOCUMENT_PATH = os.path.join(settings.BASE_DIR, 'contrib', 'sample_documents', TEST_NON_ASCII_DOCUMENT_FILENAME) -TEST_NON_ASCII_COMPRESSED_DOCUMENT_PATH = os.path.join(settings.BASE_DIR, 'contrib', 'sample_documents', TEST_NON_ASCII_COMPRESSED_DOCUMENT_FILENAME) -TEST_DOCUMENT_DESCRIPTION = 'test description' -TEST_DOCUMENT_TYPE = 'test_document_type' - - -class DocumentTestCase(TestCase): - def setUp(self): - self.document_type = DocumentType.objects.create(name='test doc type') - - ocr_settings = self.document_type.ocr_settings - ocr_settings.auto_ocr = False - ocr_settings.save() - - with open(TEST_DOCUMENT_PATH) as file_object: - self.document = self.document_type.new_document(file_object=File(file_object), label='mayan_11_1.pdf') - - def test_document_creation(self): - self.failUnlessEqual(self.document_type.name, 'test doc type') - - self.failUnlessEqual(self.document.exists(), True) - self.failUnlessEqual(self.document.size, 272213) - - self.failUnlessEqual(self.document.file_mimetype, 'application/pdf') - self.failUnlessEqual(self.document.file_mime_encoding, 'binary') - self.failUnlessEqual(self.document.label, 'mayan_11_1.pdf') - self.failUnlessEqual(self.document.checksum, 'c637ffab6b8bb026ed3784afdb07663fddc60099853fae2be93890852a69ecf3') - self.failUnlessEqual(self.document.page_count, 47) - - with open(TEST_SMALL_DOCUMENT_PATH) as file_object: - self.document.new_version(file_object=File(file_object)) - - with open(TEST_SMALL_DOCUMENT_PATH) as file_object: - self.document.new_version(file_object=File(file_object), comment='test comment 1') - - self.failUnlessEqual(self.document.versions.count(), 3) - - def tearDown(self): - self.document.delete() - self.document_type.delete() - - -class DocumentAPICreateDocumentTestCase(TestCase): - """ - Functional test to make sure all the moving parts to create a document from - the API are working correctly - """ - - def setUp(self): - self.admin_user = User.objects.create_superuser(username=TEST_ADMIN_USERNAME, email=TEST_ADMIN_EMAIL, password=TEST_ADMIN_PASSWORD) - self.document_type = DocumentType.objects.create(name='test doc type') - - ocr_settings = self.document_type.ocr_settings - ocr_settings.auto_ocr = False - ocr_settings.save() - - def test_uploading_a_document_using_token_auth(self): - # Get the an user token - token_client = APIClient() - response = token_client.post(reverse('auth_token_obtain'), {'username': TEST_ADMIN_USERNAME, 'password': TEST_ADMIN_PASSWORD}) - - # Be able to get authentication token - self.assertEqual(response.status_code, status.HTTP_200_OK) - - # Make sure a token was returned - self.assertTrue('token' in response.content) - - token = loads(response.content)['token'] - - # Create a new client to simulate a different request - document_client = APIClient() - - # Create a blank document with no token in the header - # TODO: Fix, must not be able to create the document with API token - # with open(TEST_SMALL_DOCUMENT_PATH) as file_descriptor: - # response = document_client.post(reverse('document-list'), {'document_type': self.document_type.pk, 'file': file_descriptor}) - - # Make sure toke authentication is working, should fail - # TODO: FIX failing test: self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) - - document_client.credentials(HTTP_AUTHORIZATION='Token ' + token) - - # Create a blank document - with open(TEST_SMALL_DOCUMENT_PATH) as file_descriptor: - document_response = document_client.post(reverse('document-list'), {'document_type': self.document_type.pk, 'file': file_descriptor}) - - self.assertEqual(document_response.status_code, status.HTTP_201_CREATED) - - # The document was created in the DB? - self.assertEqual(Document.objects.count(), 1) - - new_version_url = reverse('document-new-version', args=[Document.objects.first().pk]) - - with open(TEST_DOCUMENT_PATH) as file_descriptor: - response = document_client.post(new_version_url, {'file': file_descriptor}) - - # Make sure the document uploaded correctly - document = Document.objects.first() - self.failUnlessEqual(document.exists(), True) - self.failUnlessEqual(document.size, 272213) - - self.failUnlessEqual(document.file_mimetype, 'application/pdf') - self.failUnlessEqual(document.file_mime_encoding, 'binary') - self.failUnlessEqual(document.label, TEST_SMALL_DOCUMENT_FILENAME) - self.failUnlessEqual(document.checksum, 'c637ffab6b8bb026ed3784afdb07663fddc60099853fae2be93890852a69ecf3') - self.failUnlessEqual(document.page_count, 47) - - # Make sure we can edit the document via the API - document_url = reverse('document-detail', args=[Document.objects.first().pk]) - - response = document_client.post(document_url, {'description': 'edited test document'}) - - # self.assertTrue(document.description, 'edited test document') - - # Make sure we can delete the document via the API - response = document_client.delete(document_url) - - # The document was deleted from the the DB? - self.assertEqual(Document.objects.count(), 0) - - def tearDown(self): - self.document_type.delete() - - -class DocumentsViewsFunctionalTestCase(TestCase): - """ - Functional tests to make sure all the moving parts after creating a - document from the frontend are working correctly - """ - - def setUp(self): - from sources.models import WebFormSource - from sources.literals import SOURCE_CHOICE_WEB_FORM - - DocumentType.objects.all().delete() # Clean up - self.document_type = DocumentType.objects.create(name=TEST_DOCUMENT_TYPE) - 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()) - # Create new webform source - self.client.post(reverse('sources:setup_source_create', args=[SOURCE_CHOICE_WEB_FORM]), {'title': 'test', 'uncompress': 'n', 'enabled': True}) - self.assertEqual(WebFormSource.objects.count(), 1) - - # Upload the test document - with open(TEST_SMALL_DOCUMENT_PATH) as file_descriptor: - self.client.post(reverse('sources:upload_interactive'), {'document-language': 'eng', 'source-file': file_descriptor, 'document_type_id': self.document_type.pk}) - self.assertEqual(Document.objects.count(), 1) - self.document = Document.objects.first() - - def tearDown(self): - self.document.delete() - self.document_type.delete() - - def test_document_view(self): - response = self.client.get(reverse('documents:document_list')) - self.assertContains(response, 'Total: 1', status_code=200) - - # test document simple view - response = self.client.get(reverse('documents:document_properties', args=[self.document.pk])) - self.assertContains(response, 'roperties for document', status_code=200) - - def test_document_type_views(self): - # Check that there are no document types - response = self.client.get(reverse('documents:document_type_list')) - self.assertContains(response, 'Total: 1', status_code=200) - - # Create a document type - response = self.client.post(reverse('documents:document_type_create'), {'name': 'test document type 2'}, follow=True) - #TODO: FIX self.assertContains(response, 'successfully', status_code=200) - - # Check that there are two document types - response = self.client.get(reverse('documents:document_type_list')) - #TODO: FIX self.assertContains(response, 'Total: 2', status_code=200) - - self.assertEqual(self.document_type.name, TEST_DOCUMENT_TYPE) - - # Edit the document type - response = self.client.post(reverse('documents:document_type_edit', args=[self.document_type.pk]), data={'name': TEST_DOCUMENT_TYPE + 'partial'}, follow=True) - #TODO: FIX self.assertContains(response, 'Document type edited successfully', status_code=200) - - # Reload document type model data - self.document = DocumentType.objects.get(pk=self.document.pk) - #TODO: FIX self.assertEqual(self.document_type.name, TEST_DOCUMENT_TYPE + 'partial') - - # Delete the document type - response = self.client.post(reverse('documents:document_type_delete', args=[self.document_type.pk]), follow=True) - #TODO: FIX self.assertContains(response, 'Document type: {0} deleted successfully'.format(self.document_type.name), status_code=200) - - # Check that there are no document types - response = self.client.get(reverse('documents:document_type_list')) - #TODO: FIX self.assertEqual(response.status_code, 200) - #TODO: FIX self.assertContains(response, 'ocument types (0)', status_code=200) diff --git a/mayan/apps/dynamic_search/test_models.py b/mayan/apps/dynamic_search/test_models.py new file mode 100644 index 0000000000..b8014a2b0f --- /dev/null +++ b/mayan/apps/dynamic_search/test_models.py @@ -0,0 +1,48 @@ +from __future__ import unicode_literals + +from django.contrib.auth.models import User +from django.core.files.base import File +from django.core.urlresolvers import reverse +from django.test.client import Client +from django.test import TestCase + +from documents.models import Document, DocumentType +from documents.search import document_search +from documents.tests import ( + TEST_ADMIN_PASSWORD, TEST_ADMIN_USERNAME, TEST_ADMIN_EMAIL, + TEST_DOCUMENT_PATH, TEST_DOCUMENT_TYPE, TEST_SMALL_DOCUMENT_PATH +) + + +class DocumentSearchTestCase(TestCase): + def setUp(self): + self.admin_user = User.objects.create_superuser(username=TEST_ADMIN_USERNAME, email=TEST_ADMIN_EMAIL, password=TEST_ADMIN_PASSWORD) + self.document_type = DocumentType.objects.create(label=TEST_DOCUMENT_TYPE) + + with open(TEST_SMALL_DOCUMENT_PATH) as file_object: + self.document = self.document_type.new_document(file_object=File(file_object), label='mayan_11_1.pdf') + + def test_simple_search_after_related_name_change(self): + """ + Test that simple search works after related_name changes to + document versions and document version pages + """ + + model_list, result_set, elapsed_time = document_search.search({'q': 'Mayan'}, user=self.admin_user) + self.assertEqual(len(result_set), 1) + self.assertEqual(list(model_list), [self.document]) + + def test_advanced_search_after_related_name_change(self): + # Test versions__filename + model_list, result_set, elapsed_time = document_search.search({'label': self.document.label}, user=self.admin_user) + self.assertEqual(len(result_set), 1) + self.assertEqual(list(model_list), [self.document]) + + # Test versions__mimetype + model_list, result_set, elapsed_time = document_search.search({'versions__mimetype': self.document.file_mimetype}, user=self.admin_user) + self.assertEqual(len(result_set), 1) + self.assertEqual(list(model_list), [self.document]) + + def tearDown(self): + self.document.delete() + self.document_type.delete() diff --git a/mayan/apps/dynamic_search/tests.py b/mayan/apps/dynamic_search/test_views.py similarity index 56% rename from mayan/apps/dynamic_search/tests.py rename to mayan/apps/dynamic_search/test_views.py index 3fa0752da0..0ecc14d32c 100644 --- a/mayan/apps/dynamic_search/tests.py +++ b/mayan/apps/dynamic_search/test_views.py @@ -14,40 +14,6 @@ from documents.tests import ( ) -class DocumentSearchTestCase(TestCase): - def setUp(self): - self.admin_user = User.objects.create_superuser(username=TEST_ADMIN_USERNAME, email=TEST_ADMIN_EMAIL, password=TEST_ADMIN_PASSWORD) - self.document_type = DocumentType.objects.create(name=TEST_DOCUMENT_TYPE) - - with open(TEST_SMALL_DOCUMENT_PATH) as file_object: - self.document = self.document_type.new_document(file_object=File(file_object), label='mayan_11_1.pdf') - - def test_simple_search_after_related_name_change(self): - """ - Test that simple search works after related_name changes to - document versions and document version pages - """ - - model_list, result_set, elapsed_time = document_search.search({'q': 'Mayan'}, user=self.admin_user) - self.assertEqual(len(result_set), 1) - self.assertEqual(list(model_list), [self.document]) - - def test_advanced_search_after_related_name_change(self): - # Test versions__filename - model_list, result_set, elapsed_time = document_search.search({'label': self.document.label}, user=self.admin_user) - self.assertEqual(len(result_set), 1) - self.assertEqual(list(model_list), [self.document]) - - # Test versions__mimetype - model_list, result_set, elapsed_time = document_search.search({'versions__mimetype': self.document.file_mimetype}, user=self.admin_user) - self.assertEqual(len(result_set), 1) - self.assertEqual(list(model_list), [self.document]) - - def tearDown(self): - self.document.delete() - self.document_type.delete() - - class Issue46TestCase(TestCase): """ Functional tests to make sure issue 46 is fixed @@ -63,7 +29,7 @@ class Issue46TestCase(TestCase): self.document_count = 30 - self.document_type = DocumentType.objects.create(name='test doc type') + self.document_type = DocumentType.objects.create(label=TEST_DOCUMENT_TYPE) # Upload 30 instances of the same test document for i in range(self.document_count): diff --git a/mayan/apps/folders/tests.py b/mayan/apps/folders/test_models.py similarity index 93% rename from mayan/apps/folders/tests.py rename to mayan/apps/folders/test_models.py index 69c328eb83..07f2d9c6bf 100644 --- a/mayan/apps/folders/tests.py +++ b/mayan/apps/folders/test_models.py @@ -11,6 +11,7 @@ from authentication.tests import ( TEST_ADMIN_EMAIL, TEST_ADMIN_PASSWORD, TEST_ADMIN_USERNAME ) from documents.models import Document, DocumentType +from documents.test_models import TEST_DOCUMENT_TYPE from .models import Folder @@ -19,7 +20,7 @@ TEST_DOCUMENT_PATH = os.path.join(settings.BASE_DIR, 'contrib', 'sample_document class FolderTestCase(TestCase): def setUp(self): - self.document_type = DocumentType.objects.create(name='test doc type') + self.document_type = DocumentType.objects.create(label=TEST_DOCUMENT_TYPE) with open(TEST_DOCUMENT_PATH) as file_object: self.document = self.document_type.new_document(file_object=File(file_object)) diff --git a/mayan/apps/lock_manager/tests.py b/mayan/apps/lock_manager/test_models.py similarity index 100% rename from mayan/apps/lock_manager/tests.py rename to mayan/apps/lock_manager/test_models.py diff --git a/mayan/apps/ocr/tests.py b/mayan/apps/ocr/test_models.py similarity index 95% rename from mayan/apps/ocr/tests.py rename to mayan/apps/ocr/test_models.py index 4ca888d5d0..adcd720683 100644 --- a/mayan/apps/ocr/tests.py +++ b/mayan/apps/ocr/test_models.py @@ -9,7 +9,7 @@ from documents.tests import TEST_SMALL_DOCUMENT_PATH, TEST_DOCUMENT_TYPE class DocumentOCRTestCase(TransactionTestCase): def setUp(self): - self.document_type = DocumentType.objects.create(name=TEST_DOCUMENT_TYPE) + self.document_type = DocumentType.objects.create(label=TEST_DOCUMENT_TYPE) ocr_settings = self.document_type.ocr_settings ocr_settings.auto_ocr = False diff --git a/mayan/apps/sources/tests.py b/mayan/apps/sources/test_models.py similarity index 98% rename from mayan/apps/sources/tests.py rename to mayan/apps/sources/test_models.py index 73bdde8138..9cbf18f42f 100644 --- a/mayan/apps/sources/tests.py +++ b/mayan/apps/sources/test_models.py @@ -30,7 +30,7 @@ class UploadDocumentTestCase(TestCase): """ def setUp(self): - self.document_type = DocumentType.objects.create(name=TEST_DOCUMENT_TYPE) + self.document_type = DocumentType.objects.create(label=TEST_DOCUMENT_TYPE) ocr_settings = self.document_type.ocr_settings ocr_settings.auto_ocr = False ocr_settings.save() diff --git a/mayan/apps/tags/tests.py b/mayan/apps/tags/test_models.py similarity index 92% rename from mayan/apps/tags/tests.py rename to mayan/apps/tags/test_models.py index 90e93ca451..95c60028f3 100644 --- a/mayan/apps/tags/tests.py +++ b/mayan/apps/tags/test_models.py @@ -7,6 +7,7 @@ from django.core.files.base import File from django.test import TestCase from documents.models import Document, DocumentType +from documents.test_models import TEST_DOCUMENT_TYPE from .literals import COLOR_RED from .models import Tag @@ -16,7 +17,7 @@ TEST_DOCUMENT_PATH = os.path.join(settings.BASE_DIR, 'contrib', 'sample_document class TagTestCase(TestCase): def setUp(self): - self.document_type = DocumentType(name='test doc type') + self.document_type = DocumentType(label=TEST_DOCUMENT_TYPE) self.document_type.save() self.document = Document(