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
« prev ^ index » next coverage.py v7.5.0, created at 2025-09-13 15:29 -0300
1from types import SimpleNamespace
3from django.contrib.auth import get_user_model
4from django.test import Client, TestCase
5from django.urls import reverse
7from website.models.AuthorModel import Author
8from website.models.PostModel import Post
9from website.models.ReaderModel import Reader
11User = get_user_model()
14class ProfileReaderPostMore2Test(TestCase):
15 def setUp(self):
16 self.client = Client()
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)
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")
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
41 ok = check_reader_form(post, reader)
42 self.assertTrue(ok)
43 reader.refresh_from_db()
44 self.assertEqual(reader.reader_name, "NewR")
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 )
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)
69 # owner can access
70 self.client.force_login(ua)
71 resp2 = self.client.get(url)
72 self.assertEqual(resp2.status_code, 200)