Coverage for website/documents/tests/test_views.py: 100.00%
40 statements
« prev ^ index » next coverage.py v7.6.7, created at 2025-08-14 10:31 +0000
« prev ^ index » next coverage.py v7.6.7, created at 2025-08-14 10:31 +0000
1import logging
2from unittest.mock import Mock
4from django.core.files import File
5from django.test import Client, TestCase, override_settings
7from documents.models import Document
8from members.models import Member
11@override_settings(SUSPEND_SIGNALS=True)
12class GetDocumentTest(TestCase):
13 """tests for the :func:`.get_document` view."""
15 fixtures = ["members.json"]
17 @classmethod
18 def setUpTestData(cls):
19 cls.file_en = Mock(spec=File)
20 cls.file_en.name = "file.pdf"
21 cls.file_en.chunks.return_value = [b"file"]
23 cls.document = Document.objects.create(
24 pk=1,
25 name="Test document (EN)",
26 category="misc",
27 file=cls.file_en,
28 )
30 cls.member = Member.objects.filter(last_name="Wiggers").first()
32 def setUp(self):
33 self.client = Client()
34 logger = logging.getLogger("django.request")
35 self.previous_log_level = logger.getEffectiveLevel()
36 logger.setLevel(logging.ERROR)
38 def tearDown(self):
39 logger = logging.getLogger("django.request")
40 logger.setLevel(self.previous_log_level)
42 def test_basic(self):
43 response = self.client.post("/association/documents/document/1", follow=True)
44 self.assertEqual(response.status_code, 200)
46 def test_does_not_exist(self):
47 response = self.client.post("/association/documents/document/999", follow=True)
48 self.assertEqual(response.status_code, 404)
50 def test_members_only(self):
51 self.document.members_only = True
52 self.document.save()
54 response = self.client.post("/association/documents/document/1", follow=True)
55 template_names = [template.name for template in response.templates]
56 self.assertIn("two_factor/core/login.html", template_names)
58 self.client.force_login(self.member)
60 response = self.client.post("/association/documents/document/1", follow=True)
61 template_names = [template.name for template in response.templates]
62 self.assertNotIn("two_factor/core/login.html", template_names)