Coverage for vendor / test_views.py: 100%
93 statements
« prev ^ index » next coverage.py v7.13.5, created at 2026-03-24 12:43 +0000
« prev ^ index » next coverage.py v7.13.5, created at 2026-03-24 12:43 +0000
1from django.test import TestCase
4from .models import Model
5from .forms import FormDisabled
6from .forms import Form
7from . import app_label
9from django.contrib.auth.models import User
11from django.core.exceptions import ObjectDoesNotExist
13try:
14 from django.urls import reverse
15except Exception: # pragma: no cover
16 from django.urls import reverse # pragma: no cover
18from sm.utils import random_string
21class Tester(TestCase):
22 teststring = random_string()
23 testitem = None
24 password = random_string()
26 def login(self):
27 """
28 Login as user
29 """
30 self.client.login(username=self.user.username, password=self.password)
32 def setUp(self):
33 """
34 Create user
35 Create some item in models for testing
36 """
37 self.user = User.objects.create_superuser(
38 username=random_string(), password=self.password
39 )
41 self.testitem, created = Model.objects.get_or_create(
42 name=self.teststring,
43 )
45 def test_login_redir(self):
46 response = self.client.get(reverse("%s:index" % app_label))
47 self.assertEqual(response.status_code, 302, "no redirect?")
49 def test_listview(self):
50 self.login()
51 response = self.client.get(reverse("%s:index" % app_label))
52 self.assertEqual(response.status_code, 200, "no status 200?")
53 item = response.context[-1]["object_list"].first()
54 self.assertIsInstance(item, Model, "object not the correct model!?")
55 self.assertEqual(item.name, self.teststring)
57 def test_detailview(self):
58 self.login()
59 url = reverse("%s:detail" % app_label, args=[self.testitem.pk])
60 self.assertEqual("/%s/detail/%i/" % (app_label, self.testitem.pk), url)
61 response = self.client.get(url)
62 self.assertEqual(response.status_code, 200, "no status 200?")
63 item = response.context[-1]["object"]
64 self.assertIsInstance(item, Model, "object not the correct model!?")
65 self.assertEqual(item.name, self.teststring)
66 form = response.context[-1]["form"]
67 self.assertIsInstance(form, FormDisabled)
68 self.assertTrue(form.fields["name"].widget.attrs["disabled"])
70 def test_updateview(self):
71 self.login()
72 url = reverse("%s:update" % app_label, args=[self.testitem.pk])
73 self.assertEqual("/%s/update/%i/" % (app_label, self.testitem.pk), url)
74 response = self.client.get(url)
75 self.assertEqual(response.status_code, 200, "no status 200?")
76 item = response.context[-1]["object"]
77 self.assertIsInstance(item, Model, "object not the correct model!?")
78 self.assertEqual(item.name, self.teststring)
79 form = response.context[-1]["form"]
80 self.assertIsInstance(form, Form)
81 self.assertRaises(
82 KeyError, form.fields["name"].widget.attrs.__getitem__, "disabled"
83 )
85 def test_deleteview(self):
86 self.login()
87 url = reverse("%s:delete" % app_label, args=[self.testitem.pk])
88 self.assertEqual("/%s/delete/%i/" % (app_label, self.testitem.pk), url)
89 response = self.client.get(url)
90 self.assertEqual(response.status_code, 200, "no status 200?")
91 item = response.context[-1]["object"]
92 self.assertIsInstance(item, Model, "object not the correct model!?")
93 self.assertEqual(item.name, self.teststring)
94 self.assertContains(response, "Are you sure you want to delete")
95 self.assertContains(response, "Confirm Delete")
97 def test_deleteview_post(self):
98 self.login()
99 response = self.client.post(
100 reverse("%s:delete" % app_label, args=[self.testitem.pk]), follow=True
101 )
102 self.assertEqual(response.status_code, 200, "no status 200?")
103 self.assertRedirects(response, reverse("%s:index" % app_label), status_code=302)
104 self.assertContains(
105 response, "%s was deleted successfully" % self.testitem.name
106 )
107 with self.assertRaises(ObjectDoesNotExist):
108 Model.objects.get(name=self.testitem.name)
110 def test_createview(self):
111 self.login()
112 url = reverse("%s:create" % app_label)
113 self.assertEqual("/%s/create" % app_label, url)
114 response = self.client.get(url)
115 self.assertEqual(response.status_code, 200, "no status 200?")
116 self.assertRaises(KeyError, response.context[-1].__getitem__, "object")
117 self.assertIn("form", response.context[-1])
118 form = response.context[-1]["form"]
119 self.assertRaises(
120 KeyError, form.fields["name"].widget.attrs.__getitem__, "disabled"
121 )
123 def test_createview_post(self):
124 # Make sure we have no objects in there
125 Model.objects.all().delete()
126 self.login()
127 data = {
128 "name": self.teststring,
129 }
130 response = self.client.post(
131 reverse("%s:create" % app_label),
132 data,
133 follow=True,
134 )
135 self.assertEqual(response.status_code, 200, "no status 200?")
136 self.assertRedirects(response, reverse("%s:index" % app_label), status_code=302)
137 item = response.context[-1]["object_list"].first()
138 self.assertEqual(item.name, data["name"])
139 self.assertIsInstance(item, Model)
140 self.assertContains(response, "%s was created successfully" % data["name"])