Add checkout tests

Add link tests. Add checkout info view tests. Move common code to
a test mixin.

Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
This commit is contained in:
Roberto Rosario
2019-04-07 01:08:46 -04:00
parent f6a0a421a5
commit 3a60155bfa
3 changed files with 75 additions and 10 deletions

View File

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

View File

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

View File

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