From c01d57bf344a6b0581b70e7dd2238f5c9a008ebb Mon Sep 17 00:00:00 2001
From: David Barnes <barnesdavidj@gmail.com>
Date: Thu, 7 Jul 2022 10:34:12 -0400
Subject: [PATCH] Add tests for sample_form view. Add tests for view_404 view
 by triggering 404s.

---
 tests/test_views.py | 43 +++++++++++++++++++++++++++++++++++++++++++
 tests/urls.py       |  3 +++
 2 files changed, 46 insertions(+)

diff --git a/tests/test_views.py b/tests/test_views.py
index 4b546ef..197b8e1 100644
--- a/tests/test_views.py
+++ b/tests/test_views.py
@@ -59,6 +59,15 @@ class ViewsTestCase(TestCase):
         self.assertEqual(response.status_code, 200)
         self.assertContains(response, 'Register')
 
+    def test_sample_form_view_returns_correct_template(self):
+        """Test sample1 view returns correct template"""
+        request = RequestFactory().get('sample_form/')
+        request.user = self.test_user_w_perms
+        request.site = MOCK_SITE
+        response = views.sample_form(request)
+        self.assertEqual(response.status_code, 200)
+        self.assertContains(response, 'This is the sample form page!')
+
     def test_sample1_view_returns_correct_template(self):
         """Test sample1 view returns correct template"""
         request = RequestFactory().get('sample1/')
@@ -121,6 +130,17 @@ class ViewsTestCase(TestCase):
         self.assertEqual(response.status_code, 200)
         self.assertContains(response, "Register")
 
+    def test_sample_form_view_redirects_to_login_when_not_authenticated(self):
+        """Test sample_form view redirects to login when not authenticated"""
+        response = self.client.get(
+            reverse('django_adminlte_2:sample_form'),
+            follow=True
+        )
+        self.assertEqual(response.status_code, 200)
+        self.assertNotContains(response, "This is the sample_form page!")
+        self.assertContains(response, "Username")
+        self.assertContains(response, "Login")
+
     def test_sample1_view_redirects_to_login_when_not_authenticated(self):
         """Test sample1 view redirects to login when not authenticated"""
         response = self.client.get(
@@ -167,6 +187,16 @@ class ViewsTestCase(TestCase):
         self.assertContains(response, "Username")
         self.assertContains(response, "Login")
 
+    def test_sample_form_view_works_when_authenticated_with_no_permissions(self):
+        """Test sample_form view works when authenticated with no permissions"""
+        self.client.force_login(self.test_user_no_perms)
+        response = self.client.get(
+            reverse('django_adminlte_2:sample_form')
+        )
+        self.assertEqual(response.status_code, 200)
+        self.assertContains(response, "This is the sample form page!")
+        self.assertNotContains(response, "Username")
+
     def test_sample1_view_works_when_authenticated_with_correct_permissions(self):
         """Test sample1 view works when authenticated with correct permissions"""
         self.client.force_login(self.test_user_w_perms)
@@ -186,3 +216,16 @@ class ViewsTestCase(TestCase):
         self.assertEqual(response.status_code, 200)
         self.assertContains(response, "This is the sample2 page!")
         self.assertNotContains(response, "Username")
+
+    def test_404_view_works_when_triggered(self):
+        """Test 404 view works when triggered"""
+        self.client.force_login(self.test_user_no_perms)
+        response = self.client.get('unknown/route/')
+        self.assertEqual(response.status_code, 302)
+
+    def test_404_view_works_when_triggered_and_followed(self):
+        """Test 404 view works when triggered"""
+        self.client.force_login(self.test_user_no_perms)
+        response = self.client.get('unknown/route/', follow=True)
+        self.assertEqual(response.status_code, 200)
+        self.assertContains(response, "The page you were looking for does not exist")
diff --git a/tests/urls.py b/tests/urls.py
index b36176a..faa0893 100644
--- a/tests/urls.py
+++ b/tests/urls.py
@@ -16,6 +16,9 @@ Including another URLconf
 from django.contrib import admin
 from django.urls import include, path
 
+# Will use the custom 404 provided by the package.
+handler404 = 'django_adminlte_2.views.view_404'
+
 urlpatterns = [
     # Adminlte2
     path('', include('django_adminlte_2.urls')),
-- 
GitLab