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

1from django.contrib.auth import get_user_model 

2from django.test import TestCase 

3from django.urls import reverse 

4 

5from website.models.AuthorModel import Author 

6from website.models.PostModel import Post 

7from website.models.ReaderModel import Reader 

8 

9User = get_user_model() 

10 

11 

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") 

23 

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 ) 

29 

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) 

37 

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) 

46 

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)