~linuxgoose/bocpress

ref: a044d95ebe920ab4bd8a258918dfdb12b19f85c2 bocpress/main/tests/test_snapshots.py -rw-r--r-- 3.7 KiB
a044d95eJordan Robinson update landing text 8 days ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
from django.test import TestCase
from django.urls import reverse

from main import models


class SnapshotCreateTestCase(TestCase):
    def setUp(self):
        self.user = models.User.objects.create(username="alice")
        self.client.force_login(self.user)

    def test_snapshot_create(self):
        data = {
            "title": "New blog",
            "body": "Hey audience!",
        }
        response = self.client.post(
            reverse("snapshot_create"),
            data=data,
        )
        self.assertEqual(response.status_code, 200)
        self.assertEqual(models.Snapshot.objects.all().count(), 1)
        self.assertEqual(models.Snapshot.objects.all().first().title, data["title"])
        self.assertEqual(models.Snapshot.objects.all().first().body, data["body"])
        self.assertEqual(models.Snapshot.objects.all().first().owner, self.user)


class SnapshotDetailTestCase(TestCase):
    def setUp(self):
        self.user = models.User.objects.create(username="alice")
        self.client.force_login(self.user)
        self.snapshot = models.Snapshot.objects.create(
            owner=self.user,
            title="New blog",
            body="hello world",
        )

    def test_snapshot_detail(self):
        response = self.client.get(
            reverse("snapshot_detail", args=(self.snapshot.id,)),
        )
        self.assertEqual(response.status_code, 200)
        self.assertContains(response, self.snapshot.id)
        self.assertContains(response, self.snapshot.title)


class SnapshotListTestCase(TestCase):
    def setUp(self):
        self.user = models.User.objects.create(username="alice")
        self.client.force_login(self.user)
        self.snapshot_a = models.Snapshot.objects.create(
            owner=self.user,
            title="New blog",
            body="hello world",
        )
        self.snapshot_b = models.Snapshot.objects.create(
            owner=self.user,
            title="New blog",
            body="Hello new world",
        )

    def test_snapshot_list(self):
        response = self.client.get(reverse("snapshot_list"))
        self.assertEqual(response.status_code, 200)
        self.assertContains(response, self.snapshot_a.id)
        self.assertContains(response, self.snapshot_a.title)
        self.assertContains(response, self.snapshot_b.id)
        self.assertContains(response, self.snapshot_b.title)


class SnapshotDetailNonOwnerTestCase(TestCase):
    """Test snapshots cannot be accessed by non-owners."""

    def setUp(self):
        self.user_a = models.User.objects.create(username="alice")
        self.snapshot_a = models.Snapshot.objects.create(
            owner=self.user_a,
            title="New blog",
            body="hello world",
        )

    def test_snapshot_detail_nonauth(self):
        self.user_b = models.User.objects.create(username="bob")
        self.client.force_login(self.user_b)
        response = self.client.get(
            reverse("snapshot_detail", args=(self.snapshot_a.id,)),
        )
        self.assertEqual(response.status_code, 403)


class SnapshotListNonownerTestCase(TestCase):
    """Test snapshot list cannot be accessed by non-owners."""

    def setUp(self):
        self.user_a = models.User.objects.create(username="alice")
        self.snapshot_a = models.Snapshot.objects.create(
            owner=self.user_a,
            title="New blog",
            body="hello world",
        )

    def test_snapshot_detail_nonauth(self):
        self.user_b = models.User.objects.create(username="bob")
        self.client.force_login(self.user_b)
        response = self.client.get(
            reverse("snapshot_list"),
        )
        self.assertEqual(response.status_code, 200)
        self.assertContains(response, "none")