Coverage for website/tests/test_profile_reader_post_more2.py: 100%

41 statements  

« prev     ^ index     » next       coverage.py v7.5.0, created at 2025-09-13 15:29 -0300

1from types import SimpleNamespace 

2 

3from django.contrib.auth import get_user_model 

4from django.test import Client, TestCase 

5from django.urls import reverse 

6 

7from website.models.AuthorModel import Author 

8from website.models.PostModel import Post 

9from website.models.ReaderModel import Reader 

10 

11User = get_user_model() 

12 

13 

14class ProfileReaderPostMore2Test(TestCase): 

15 def setUp(self): 

16 self.client = Client() 

17 

18 def test_update_profile_update_existing_author(self): 

19 user = User.objects.create_user( 

20 username="au_existing", email="ae@test.com", password="p" 

21 ) 

22 Author.objects.create(user=user, author_name="Old", author_url_slug="old") 

23 self.client.force_login(user) 

24 

25 url = reverse("update-profile") 

26 resp = self.client.post(url, {"profile_type": "author", "name": "NewName"}) 

27 self.assertEqual(resp.status_code, 302) 

28 user.refresh_from_db() 

29 self.assertEqual(user.author.author_name, "NewName") 

30 

31 def test_check_reader_form_save_branch(self): 

32 user = User.objects.create_user( 

33 username="r_save", email="rs@test.com", password="p" 

34 ) 

35 reader = Reader.objects.create(user=user, reader_name="OldR") 

36 post = SimpleNamespace( 

37 POST={"username": user.username, "reader_name": "NewR"}, FILES={}, user=user 

38 ) 

39 from website.views.ReaderEditView import check_reader_form 

40 

41 ok = check_reader_form(post, reader) 

42 self.assertTrue(ok) 

43 reader.refresh_from_db() 

44 self.assertEqual(reader.reader_name, "NewR") 

45 

46 def test_edit_post_permission_and_owner(self): 

47 # author A creates post 

48 ua = User.objects.create_user( 

49 username="authA", email="a@test.com", password="p" 

50 ) 

51 author_a = Author.objects.create(user=ua, author_name="A", author_url_slug="a") 

52 post = Post.objects.create( 

53 author=author_a, 

54 title="T", 

55 url_slug="slug-a", 

56 meta_description="m", 

57 text="t", 

58 ) 

59 

60 # another user B tries to edit -> redirected 

61 ub = User.objects.create_user( 

62 username="userB", email="b@test.com", password="p" 

63 ) 

64 self.client.force_login(ub) 

65 url = reverse("edit_post", kwargs={"url_slug": post.url_slug}) 

66 resp = self.client.get(url) 

67 self.assertEqual(resp.status_code, 302) 

68 

69 # owner can access 

70 self.client.force_login(ua) 

71 resp2 = self.client.get(url) 

72 self.assertEqual(resp2.status_code, 200)