• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

rafalp / Misago / 17496798327

05 Sep 2025 02:59PM UTC coverage: 96.509% (-0.3%) from 96.769%
17496798327

Pull #1995

github

web-flow
Merge 17284d7d7 into 6bb938c90
Pull Request #1995: Move `Post` model from `misago.threads` to `misago.posts`

1884 of 1974 new or added lines in 149 files covered. (95.44%)

305 existing lines in 16 files now uncovered.

66716 of 69129 relevant lines covered (96.51%)

0.97 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

86.73
/misago/threads/tests/test_threads_lists_flags.py
1
from django.urls import reverse
1✔
2

3
from ...conf.test import override_dynamic_settings
1✔
4
from ...test import assert_contains, assert_not_contains
1✔
5

6

7
@override_dynamic_settings(index_view="categories")
1✔
8
def test_site_threads_list_shows_thread_globally_pinned_flag(
1✔
9
    thread_factory, default_category, client
10
):
11
    thread = thread_factory(default_category, weight=2)
1✔
12

13
    response = client.get(reverse("misago:threads"))
1✔
14
    assert_contains(response, thread.title)
1✔
15
    assert_contains(response, "thread-flags")
1✔
16
    assert_contains(response, "thread-flag-pinned-globally")
1✔
17

18

19
def test_category_threads_list_shows_thread_globally_pinned_flag(
1✔
20
    thread_factory, default_category, client
21
):
NEW
22
    thread = thread_factory(default_category, title="Global Thread", weight=2)
×
23

24
    response = client.get(default_category.get_absolute_url())
×
25
    assert_contains(response, thread.title)
×
26
    assert_contains(response, "thread-flags")
×
27
    assert_contains(response, "thread-flag-pinned-globally")
×
28

29

30
@override_dynamic_settings(index_view="categories")
1✔
31
def test_site_threads_list_doesnt_show_users_thread_ghost_pinned_flag(
1✔
32
    thread_factory, default_category, user_client
33
):
34
    thread = thread_factory(default_category, weight=1)
1✔
35

36
    response = user_client.get(reverse("misago:threads"))
1✔
37
    assert_contains(response, thread.title)
1✔
38
    assert_not_contains(response, "thread-flags")
1✔
39
    assert_not_contains(response, "thread-flag-pinned-locally")
1✔
40

41

42
def test_category_threads_list_doesnt_show_users_ghost_thread_ghost_pinned_flag(
1✔
43
    thread_factory, default_category, child_category, user_client
44
):
45
    thread = thread_factory(child_category, weight=1)
1✔
46

47
    response = user_client.get(default_category.get_absolute_url())
1✔
48
    assert_contains(response, thread.title)
1✔
49
    assert_not_contains(response, "thread-flags")
1✔
50
    assert_not_contains(response, "thread-flag-pinned-locally")
1✔
51

52

53
@override_dynamic_settings(index_view="categories")
1✔
54
def test_site_threads_list_shows_moderators_thread_ghost_pinned_flag(
1✔
55
    thread_factory, default_category, moderator_client
56
):
57
    thread = thread_factory(default_category, weight=1)
1✔
58

59
    response = moderator_client.get(reverse("misago:threads"))
1✔
60
    assert_contains(response, thread.title)
1✔
61
    assert_contains(response, "thread-flags")
1✔
62
    assert_contains(response, "thread-flag-pinned-locally-elsewhere")
1✔
63

64

65
def test_category_threads_list_shows_moderators_thread_ghost_pinned_flag(
1✔
66
    thread_factory, default_category, child_category, moderator_client
67
):
68
    thread = thread_factory(child_category, weight=1)
1✔
69

70
    response = moderator_client.get(default_category.get_absolute_url())
1✔
71
    assert_contains(response, thread.title)
1✔
72
    assert_contains(response, "thread-flags")
1✔
73
    assert_contains(response, "thread-flag-pinned-locally-elsewhere")
1✔
74

75

76
def test_category_threads_list_shows_thread_pinned_flag(
1✔
77
    thread_factory, default_category, moderator_client
78
):
79
    thread = thread_factory(default_category, weight=1)
1✔
80

81
    response = moderator_client.get(default_category.get_absolute_url())
1✔
82
    assert_contains(response, thread.title)
1✔
83
    assert_contains(response, "thread-flags")
1✔
84
    assert_contains(response, "thread-flag-pinned-locally")
1✔
85

86

87
@override_dynamic_settings(index_view="categories")
1✔
88
def test_site_threads_list_doesnt_show_thread_pinned_flag_for_unpinned_thread(
1✔
89
    thread_factory, default_category, client
90
):
91
    thread = thread_factory(default_category)
1✔
92

93
    response = client.get(reverse("misago:threads"))
1✔
94
    assert_contains(response, thread.title)
1✔
95
    assert_not_contains(response, "thread-flags")
1✔
96
    assert_not_contains(response, "thread-flag-pinned")
1✔
97

98

99
def test_category_threads_list_shows_thread_globally_pinned_flag(
1✔
100
    thread_factory, default_category, client
101
):
102
    thread = thread_factory(default_category)
1✔
103

104
    response = client.get(default_category.get_absolute_url())
1✔
105
    assert_contains(response, thread.title)
1✔
106
    assert_not_contains(response, "thread-flags")
1✔
107
    assert_not_contains(response, "thread-flag-pinned")
1✔
108

109

110
@override_dynamic_settings(index_view="categories")
1✔
111
def test_site_threads_list_shows_moderators_thread_has_unapproved_posts_flag(
1✔
112
    thread_factory, default_category, moderator_client
113
):
NEW
114
    thread = thread_factory(default_category, has_unapproved_posts=True)
×
115

116
    response = moderator_client.get(reverse("misago:threads"))
×
117
    assert_contains(response, thread.title)
×
118
    assert_contains(response, "thread-flags")
×
119
    assert_contains(response, "thread-flag-unapproved")
×
120

121

122
def test_category_threads_list_shows_moderators_thread_has_unapproved_posts_flag(
1✔
123
    thread_factory, default_category, moderator_client
124
):
NEW
125
    thread = thread_factory(default_category, has_unapproved_posts=True)
×
126

127
    response = moderator_client.get(default_category.get_absolute_url())
×
128
    assert_contains(response, thread.title)
×
129
    assert_contains(response, "thread-flags")
×
130
    assert_contains(response, "thread-flag-unapproved")
×
131

132

133
@override_dynamic_settings(index_view="categories")
1✔
134
def test_site_threads_list_shows_moderators_thread_is_unapproved_flag(
1✔
135
    thread_factory, default_category, moderator_client
136
):
137
    thread = thread_factory(default_category, is_unapproved=True)
1✔
138

139
    response = moderator_client.get(reverse("misago:threads"))
1✔
140
    assert_contains(response, thread.title)
1✔
141
    assert_contains(response, "thread-flags")
1✔
142
    assert_contains(response, "thread-flag-unapproved")
1✔
143

144

145
def test_category_threads_list_shows_moderators_thread_is_unapproved_flag(
1✔
146
    thread_factory, default_category, moderator_client
147
):
148
    thread = thread_factory(default_category, is_unapproved=True)
1✔
149

150
    response = moderator_client.get(default_category.get_absolute_url())
1✔
151
    assert_contains(response, thread.title)
1✔
152
    assert_contains(response, "thread-flags")
1✔
153
    assert_contains(response, "thread-flag-unapproved")
1✔
154

155

156
@override_dynamic_settings(index_view="categories")
1✔
157
def test_site_threads_list_shows_moderators_thread_has_unapproved_posts_flag(
1✔
158
    thread_factory, default_category, moderator_client
159
):
160
    thread = thread_factory(default_category, has_unapproved_posts=True)
1✔
161

162
    response = moderator_client.get(reverse("misago:threads"))
1✔
163
    assert_contains(response, thread.title)
1✔
164
    assert_contains(response, "thread-flags")
1✔
165
    assert_contains(response, "thread-flag-unapproved")
1✔
166

167

168
def test_category_threads_list_shows_moderators_thread_has_unapproved_posts_flag(
1✔
169
    thread_factory, default_category, moderator_client
170
):
171
    thread = thread_factory(default_category, has_unapproved_posts=True)
1✔
172

173
    response = moderator_client.get(default_category.get_absolute_url())
1✔
174
    assert_contains(response, thread.title)
1✔
175
    assert_contains(response, "thread-flags")
1✔
176
    assert_contains(response, "thread-flag-unapproved")
1✔
177

178

179
@override_dynamic_settings(index_view="categories")
1✔
180
def test_site_threads_list_doesnt_show_user_thread_has_unapproved_posts_flag(
1✔
181
    thread_factory, default_category, user_client
182
):
183
    thread = thread_factory(default_category, has_unapproved_posts=True)
1✔
184

185
    response = user_client.get(reverse("misago:threads"))
1✔
186
    assert_contains(response, thread.title)
1✔
187
    assert_not_contains(response, "thread-flags")
1✔
188
    assert_not_contains(response, "thread-flag-unapproved")
1✔
189

190

191
def test_category_threads_list_doesnt_show_user_thread_has_unapproved_posts_flag(
1✔
192
    thread_factory, default_category, user_client
193
):
194
    thread = thread_factory(default_category, has_unapproved_posts=True)
1✔
195

196
    response = user_client.get(default_category.get_absolute_url())
1✔
197
    assert_contains(response, thread.title)
1✔
198
    assert_not_contains(response, "thread-flags")
1✔
199
    assert_not_contains(response, "thread-flag-unapproved")
1✔
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc