Skip to content

Commit 9834eac

Browse files
committed
fix tests
1 parent fff9ecf commit 9834eac

File tree

2 files changed

+29
-34
lines changed

2 files changed

+29
-34
lines changed

tests/base.py

+12
Original file line numberDiff line numberDiff line change
@@ -41,3 +41,15 @@ def setUpTestData(cls):
4141

4242
def tearDown(self):
4343
Post.objects.all().delete()
44+
45+
def assertResponseAndTemplate(self, response, template_name, status_code=200):
46+
"""Helper method to check response status and template after redirects"""
47+
if hasattr(response, 'redirect_chain') and response.redirect_chain:
48+
# Get the final response status from the last redirect
49+
final_url, final_status = response.redirect_chain[-1]
50+
self.assertEqual(final_status, status_code)
51+
else:
52+
# Direct response without redirects
53+
self.assertEqual(response.status_code, status_code)
54+
55+
self.assertTemplateUsed(response, template_name)

tests/test_views.py

+17-34
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,7 @@ class TestViews(SetUp):
2424
def test_status_view(self, mock_db_status):
2525
mock_db_status.return_value.get_status.return_value = (10, 2, 500)
2626
response = self.client.get(reverse("status"))
27-
self.assertEqual(response.status_code, 200)
28-
self.assertTemplateUsed(response, "blog/status_page.html")
27+
self.assertResponseAndTemplate(response, "blog/status_page.html")
2928

3029
# def test_all_posts_view_shows_pagination(self):
3130
# response = self.client.get("/all-posts/")
@@ -43,23 +42,20 @@ def test_status_view(self, mock_db_status):
4342

4443
def test_all_posts_view(self):
4544
response = self.client.get(reverse("all-posts"))
46-
self.assertEqual(response.status_code, 200)
47-
self.assertTemplateUsed(response, "blog/all_posts.html")
45+
self.assertResponseAndTemplate(response, "blog/all_posts.html")
4846
self.assertIsInstance(response.context["posts"][0], Post)
4947

50-
def test_home_view_anonymous_user(self): # TODO add check for draft post
48+
def test_home_view_anonymous_user(self):
5149
response = self.client.get(reverse("home"))
52-
self.assertEqual(response.status_code, 200)
53-
self.assertTemplateUsed(response, "blog/home.html")
50+
self.assertResponseAndTemplate(response, "blog/home.html")
5451
self.assertIsInstance(response.context["posts"][0], Post)
5552

5653
def test_home_view_admin_user(self):
57-
# Access using admin_user (should get posts in draft mode)
5854
self.client.login(
5955
username=self.admin_user.username, password=self.admin_user_password
6056
)
6157
response = self.client.get(reverse("home"))
62-
self.assertEqual(response.status_code, 200)
58+
self.assertResponseAndTemplate(response, "blog/home.html")
6359

6460
def test_home_view_htmx_request(self):
6561
headers = {"HTTP_HX-Request": "true", "HTTP_HX-Trigger": "TEST"}
@@ -75,8 +71,7 @@ def test_home_view_htmx_request(self):
7571
def test_post_detail_view_anonymous(self):
7672
test_post_detail_url = reverse("post-detail", args=[self.first_post.slug])
7773
response = self.client.get(test_post_detail_url)
78-
self.assertEqual(response.status_code, 200)
79-
self.assertTemplateUsed(response, "blog/post/post_detail.html")
74+
self.assertResponseAndTemplate(response, "blog/post/post_detail.html")
8075

8176
def test_post_detail_view_anonymous_draft_post(self):
8277
draft_post_detail_url = reverse("post-detail", args=[self.draft_post.slug])
@@ -97,8 +92,7 @@ def test_post_create_view_has_correct_context_template_and_form(self):
9792
username=self.admin_user.username, password=self.admin_user_password
9893
)
9994
response = self.client.get(reverse("post-create"))
100-
self.assertEqual(response.status_code, 200)
101-
self.assertTemplateUsed(response, "blog/post/add_post.html")
95+
self.assertResponseAndTemplate(response, "blog/post/add_post.html")
10296
self.assertIsInstance(response.context["form"], PostForm)
10397
self.assertEqual(response.context["title"], "Create a New Post")
10498

@@ -161,8 +155,7 @@ def test_update_post_view_has_correct_context_template_and_form(self):
161155
)
162156
post1_update_url = reverse("post-update", args=[self.first_post.slug])
163157
response = self.client.get(post1_update_url)
164-
self.assertEqual(response.status_code, 200)
165-
self.assertTemplateUsed(response, "blog/post/edit_post.html")
158+
self.assertResponseAndTemplate(response, "blog/post/edit_post.html")
166159
self.assertIsInstance(response.context["form"], PostForm)
167160
self.assertEqual(response.context["title"], f"Edit {self.first_post.title}")
168161

@@ -351,8 +344,7 @@ def test_comment_delete_different_user_blocked(self):
351344
def test_category_view_anonymous(self):
352345
category_url = reverse("blog-category", args=[self.default_category.slug])
353346
response = self.client.get(category_url)
354-
self.assertEqual(response.status_code, 200)
355-
self.assertTemplateUsed(response, "blog/categories.html")
347+
self.assertResponseAndTemplate(response, "blog/categories.html")
356348
self.assertEqual(response.context["category"], self.default_category)
357349
self.assertIsInstance(response.context["posts"][0], Post)
358350

@@ -380,10 +372,8 @@ def test_category_view_htmx_request(self):
380372

381373

382374
def test_search_view_blank(self):
383-
# Empty page if user didn't search for anything and manually typed in the search url (get)
384375
response = self.client.get(reverse("blog-search"))
385-
self.assertEqual(response.status_code, 200)
386-
self.assertTemplateUsed(response, "blog/search_posts.html")
376+
self.assertResponseAndTemplate(response, "blog/search_posts.html")
387377

388378
def test_search_view_anonymous(self):
389379
# If anonymous, should be able to find a post
@@ -406,8 +396,7 @@ def test_search_view_staff(self):
406396

407397
def test_register_view_happy_path(self):
408398
response = self.client.get(reverse("register"))
409-
self.assertEqual(response.status_code, 200)
410-
self.assertTemplateUsed(response, "users/register.html")
399+
self.assertResponseAndTemplate(response, "users/register.html")
411400
self.assertIsInstance(response.context["form"], UserRegisterForm)
412401

413402
data = {
@@ -451,8 +440,7 @@ def test_profile_view(self):
451440
username=self.admin_user.username, password=self.admin_user_password
452441
)
453442
response = self.client.get(reverse("profile"))
454-
self.assertEqual(response.status_code, 200)
455-
self.assertTemplateUsed(response, "users/profile.html")
443+
self.assertResponseAndTemplate(response, "users/profile.html")
456444
self.assertIsInstance(response.context["p_form"], ProfileUpdateForm)
457445
self.assertIsInstance(response.context["u_form"], UserUpdateForm)
458446

@@ -489,34 +477,29 @@ def test_profile_view_edit_invalid(self):
489477

490478
def test_login_view(self):
491479
response = self.client.get(reverse("login"))
492-
self.assertEqual(response.status_code, 200)
493-
self.assertTemplateUsed(response, "users/login.html")
480+
self.assertResponseAndTemplate(response, "users/login.html")
494481

495482
def test_logout_view(self):
496483
self.client.login(
497484
username=self.admin_user.username, password=self.admin_user_password
498485
)
499486
response = self.client.post(reverse("logout"))
500-
self.assertEqual(response.status_code, 200)
501-
self.assertTemplateUsed(response, "users/logout.html")
487+
self.assertResponseAndTemplate(response, "users/logout.html")
502488

503489
def test_password_rest_view(self):
504490
response = self.client.get(reverse("password_reset"))
505-
self.assertEqual(response.status_code, 200)
506-
self.assertTemplateUsed(response, "users/password_reset.html")
491+
self.assertResponseAndTemplate(response, "users/password_reset.html")
507492

508493
def test_password_reset_done_view(self):
509494
response = self.client.get(reverse("password_reset_done"))
510-
self.assertEqual(response.status_code, 200)
511-
self.assertTemplateUsed(response, "users/password_reset_done.html")
495+
self.assertResponseAndTemplate(response, "users/password_reset_done.html")
512496

513497
# def test_password_reset_confirm_view(self):
514498
# # TODO
515499

516500
def test_password_reset_complete(self):
517501
response = self.client.get(reverse("password_reset_complete"))
518-
self.assertEqual(response.status_code, 200)
519-
self.assertTemplateUsed(response, "users/password_reset_complete.html")
502+
self.assertResponseAndTemplate(response, "users/password_reset_complete.html")
520503

521504
def test_sitemap_view(self):
522505
response = self.client.get(reverse("django.contrib.sitemaps.views.sitemap"))

0 commit comments

Comments
 (0)