From 3a60155bfa02ba809d9703ec84631c0468f8126f Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Sun, 7 Apr 2019 01:08:46 -0400 Subject: [PATCH] Add checkout tests Add link tests. Add checkout info view tests. Move common code to a test mixin. Signed-off-by: Roberto Rosario --- mayan/apps/checkouts/tests/mixins.py | 18 +++++++++ mayan/apps/checkouts/tests/test_links.py | 50 ++++++++++++++++++++++++ mayan/apps/checkouts/tests/test_views.py | 17 ++++---- 3 files changed, 75 insertions(+), 10 deletions(-) create mode 100644 mayan/apps/checkouts/tests/mixins.py create mode 100644 mayan/apps/checkouts/tests/test_links.py diff --git a/mayan/apps/checkouts/tests/mixins.py b/mayan/apps/checkouts/tests/mixins.py new file mode 100644 index 0000000000..ad931f3a45 --- /dev/null +++ b/mayan/apps/checkouts/tests/mixins.py @@ -0,0 +1,18 @@ +from __future__ import unicode_literals + +import datetime + +from django.utils.timezone import now + +from ..models import DocumentCheckout + + +class DocumentCheckoutTestMixin(object): + def _checkout_document(self): + expiration_datetime = now() + datetime.timedelta(days=1) + + DocumentCheckout.objects.checkout_document( + document=self.document, expiration_datetime=expiration_datetime, + user=self.user, block_new_version=True + ) + self.assertTrue(self.document.is_checked_out()) diff --git a/mayan/apps/checkouts/tests/test_links.py b/mayan/apps/checkouts/tests/test_links.py new file mode 100644 index 0000000000..a060cfc740 --- /dev/null +++ b/mayan/apps/checkouts/tests/test_links.py @@ -0,0 +1,50 @@ +from __future__ import unicode_literals + +from documents.tests import GenericDocumentViewTestCase + +from ..links import link_checkout_document, link_checkout_info +from ..permissions import ( + permission_document_checkout, permission_document_checkout_detail_view +) + +from .mixins import DocumentCheckoutTestMixin + + +class CheckoutLinksTestCase(DocumentCheckoutTestMixin, GenericDocumentViewTestCase): + def setUp(self): + super(CheckoutLinksTestCase, self).setUp() + self.login_user() + + def _resolve_checkout_link(self): + self.add_test_view(test_object=self.document) + context = self.get_test_view() + context['user'] = self.user + return link_checkout_document.resolve(context=context) + + def test_checkout_link_no_access(self): + resolved_link = self._resolve_checkout_link() + self.assertEqual(resolved_link, None) + + def test_checkout_link_with_access(self): + self.grant_access( + obj=self.document, permission=permission_document_checkout + ) + resolved_link = self._resolve_checkout_link() + self.assertNotEqual(resolved_link, None) + + def _resolve_checkout_info_link(self): + self.add_test_view(test_object=self.document) + context = self.get_test_view() + context['user'] = self.user + return link_checkout_info.resolve(context=context) + + def test_checkout_info_link_no_access(self): + resolved_link = self._resolve_checkout_info_link() + self.assertEqual(resolved_link, None) + + def test_checkout_info_link_with_access(self): + self.grant_access( + obj=self.document, permission=permission_document_checkout_detail_view + ) + resolved_link = self._resolve_checkout_info_link() + self.assertNotEqual(resolved_link, None) diff --git a/mayan/apps/checkouts/tests/test_views.py b/mayan/apps/checkouts/tests/test_views.py index b7500bf437..152bf7d009 100644 --- a/mayan/apps/checkouts/tests/test_views.py +++ b/mayan/apps/checkouts/tests/test_views.py @@ -20,21 +20,14 @@ from ..permissions import ( permission_document_checkout, permission_document_checkout_detail_view ) +from .mixins import DocumentCheckoutTestMixin -class DocumentCheckoutViewTestCase(GenericDocumentViewTestCase): + +class DocumentCheckoutViewTestCase(DocumentCheckoutTestMixin, GenericDocumentViewTestCase): def setUp(self): super(DocumentCheckoutViewTestCase, self).setUp() self.login_user() - def _checkout_document(self): - expiration_datetime = now() + datetime.timedelta(days=1) - - DocumentCheckout.objects.checkout_document( - document=self.document, expiration_datetime=expiration_datetime, - user=self.user, block_new_version=True - ) - self.assertTrue(self.document.is_checked_out()) - def _request_document_check_in_view(self): return self.post( viewname='checkouts:checkin_document', args=(self.document.pk,), @@ -116,6 +109,10 @@ class DocumentCheckoutViewTestCase(GenericDocumentViewTestCase): def test_checkout_detail_view_no_permission(self): self._checkout_document() + self.grant_access( + obj=self.document, + permission=permission_document_checkout + ) response = self._request_checkout_detail_view()