Coverage for website/tests/test_views_more.py: 100%
32 statements
« prev ^ index » next coverage.py v7.5.0, created at 2025-09-13 15:29 -0300
« prev ^ index » next coverage.py v7.5.0, created at 2025-09-13 15:29 -0300
1from django.contrib.auth import get_user_model
2from django.test import TestCase
3from django.urls import reverse
5from website.models.AuthorModel import Author
6from website.models.PostModel import Post
7from website.models.ReaderModel import Reader
9User = get_user_model()
12class ViewSmokeTests(TestCase):
13 def setUp(self):
14 # create an author user and reader user
15 self.author_user = User.objects.create_user(
16 username="author", email="a@test.com", password="pass"
17 )
18 self.author = Author.objects.create(user=self.author_user, author_name="Auth")
19 self.reader_user = User.objects.create_user(
20 username="reader", email="r@test.com", password="pass"
21 )
22 Reader.objects.create(user=self.reader_user, reader_name="Reader")
24 # create posts
25 for i in range(8):
26 Post.objects.create(
27 author=self.author, title=f"T{i}", url_slug=f"slug-{i}", text="txt"
28 )
30 def test_home_pagination_first_page(self):
31 url = reverse("home")
32 r = self.client.get(url)
33 self.assertEqual(r.status_code, 200)
34 # context posts should be paginated (6 per page)
35 posts = r.context["posts"]
36 self.assertEqual(len(posts.object_list), 6)
38 def test_login_view_get_and_post_invalid(self):
39 url = reverse("login")
40 # GET should return 200
41 r = self.client.get(url)
42 self.assertEqual(r.status_code, 200)
43 # POST with invalid data should not redirect
44 r2 = self.client.post(url, data={"email": "nope", "password": ""})
45 self.assertEqual(r2.status_code, 200)
47 def test_create_post_requires_author_profile(self):
48 # login as reader (not an author), try to create
49 self.client.force_login(self.reader_user)
50 url = reverse("create_post")
51 r = self.client.get(url)
52 # should redirect to home because reader has no author
53 self.assertEqual(r.status_code, 302)