@@ -162,9 +162,11 @@ def test_event_creation_with_honeypot_spam(self):
162162 )
163163 self .assertResponseCreated (response )
164164 event = Event .objects .get (title = data ["title" ])
165- self . assertTrue ( event . is_marked_spam )
165+
166166 self .assertIsNotNone (event .spam_moderation )
167+ self .assertEqual (event .spam_moderation .status , SpamModeration .Status .SPAM_LIKELY )
167168 self .assertEqual (event .spam_moderation .detection_method , "honeypot" )
169+ self .assertTrue (event .is_marked_spam )
168170
169171 def test_job_creation_with_timer_spam (self ):
170172 # FIXME: should incorporate how long a typical request takes to resolve
@@ -179,9 +181,11 @@ def test_job_creation_with_timer_spam(self):
179181 )
180182 self .assertResponseCreated (response )
181183 job = Job .objects .get (title = data ["title" ])
182- self . assertTrue ( job . is_marked_spam )
184+
183185 self .assertIsNotNone (job .spam_moderation )
186+ self .assertEqual (job .spam_moderation .status , SpamModeration .Status .SPAM_LIKELY )
184187 self .assertEqual (job .spam_moderation .detection_method , "form_submit_time" )
188+ self .assertTrue (job .is_marked_spam )
185189
186190 def test_mark_spam (self ):
187191 data = self .event_factory .get_request_data ()
@@ -193,18 +197,27 @@ def test_mark_spam(self):
193197 format = "json" ,
194198 )
195199 event = Event .objects .get (title = data ["title" ])
200+ self .assertIsNotNone (event .spam_moderation )
201+ self .assertEqual (
202+ event .spam_moderation .status , SpamModeration .Status .SCHEDULED_FOR_CHECK )
203+ # by default, all created objects will have is_marked_spam = False unless spam_moderation.status is explicitly SPAM or SPAM_LIKELY
196204 self .assertFalse (event .is_marked_spam )
197- self . assertIsNone ( event . spam_moderation )
205+
198206 response = self .client .post (
199207 reverse ("core:event-mark-spam" , kwargs = {"pk" : event .id }),
200208 data ,
201209 HTTP_ACCEPT = "application/json" ,
202210 format = "json" ,
203211 )
212+
204213 event .refresh_from_db ()
205- # non-moderators cannot mark content as spam
214+ # non-moderators cannot mark content as spam (set status to SPAM)
206215 self .assertEquals (response .status_code , 403 )
216+ self .assertIsNotNone (event .spam_moderation )
217+ self .assertEqual (
218+ event .spam_moderation .status , SpamModeration .Status .SCHEDULED_FOR_CHECK )
207219 self .assertFalse (event .is_marked_spam )
220+
208221 # check moderator
209222 self .client .login (
210223 username = self .moderator .username , password = self .user_factory .password
@@ -217,12 +230,17 @@ def test_mark_spam(self):
217230 format = "json" ,
218231 )
219232 event .refresh_from_db ()
220- self .assertTrue (event .is_marked_spam )
221233 self .assertIsNotNone (event .spam_moderation )
234+ self .assertEqual (event .spam_moderation .status , SpamModeration .Status .SPAM )
235+ self .assertTrue (event .is_marked_spam )
236+
222237 event .mark_not_spam (self .moderator )
223238 event .refresh_from_db ()
224- self . assertFalse ( event . is_marked_spam )
239+
225240 self .assertIsNotNone (event .spam_moderation )
241+ self .assertEqual (event .spam_moderation .status , SpamModeration .Status .NOT_SPAM )
242+ self .assertFalse (event .is_marked_spam )
243+
226244 # check superuser
227245 self .client .login (
228246 username = self .superuser .username , password = self .user_factory .password
@@ -234,9 +252,10 @@ def test_mark_spam(self):
234252 format = "json" ,
235253 )
236254 event .refresh_from_db ()
237- self . assertTrue ( event . is_marked_spam )
255+
238256 self .assertIsNotNone (event .spam_moderation )
239257 self .assertEqual (event .spam_moderation .status , SpamModeration .Status .SPAM )
258+ self .assertTrue (event .is_marked_spam )
240259
241260 def test_event_creation_without_spam (self ):
242261 data = self .event_factory .get_request_data ()
@@ -248,8 +267,11 @@ def test_event_creation_without_spam(self):
248267 )
249268 self .assertResponseCreated (response )
250269 event = Event .objects .get (title = data ["title" ])
270+
271+ self .assertIsNotNone (event .spam_moderation )
272+ self .assertEqual (
273+ event .spam_moderation .status , SpamModeration .Status .SCHEDULED_FOR_CHECK )
251274 self .assertFalse (event .is_marked_spam )
252- self .assertIsNone (event .spam_moderation )
253275
254276 def test_job_update_with_spam (self ):
255277 data = self .job_factory .get_request_data ()
@@ -261,8 +283,11 @@ def test_job_update_with_spam(self):
261283 )
262284 self .assertResponseCreated (response )
263285 job = Job .objects .get (title = data ["title" ])
286+
287+ self .assertIsNotNone (job .spam_moderation )
288+ self .assertEqual (job .spam_moderation .status , SpamModeration .Status .SCHEDULED_FOR_CHECK )
264289 self .assertFalse (job .is_marked_spam )
265- self . assertIsNone ( job . spam_moderation )
290+
266291 data = self .job_factory .get_request_data (
267292 honeypot_value = "spammy content" ,
268293 elapsed_time = settings .SPAM_LIKELY_SECONDS_THRESHOLD + 1 ,
@@ -274,9 +299,11 @@ def test_job_update_with_spam(self):
274299 format = "json" ,
275300 )
276301 job .refresh_from_db ()
277- self . assertTrue ( job . is_marked_spam )
302+
278303 self .assertIsNotNone (job .spam_moderation )
304+ self .assertEqual (job .spam_moderation .status , SpamModeration .Status .SPAM_LIKELY )
279305 self .assertEqual (job .spam_moderation .detection_method , "honeypot" )
306+ self .assertTrue (job .is_marked_spam )
280307
281308 def test_exclude_spam_from_public_views (self ):
282309 data = self .event_factory .get_request_data (honeypot_value = "spammy content" )
@@ -288,4 +315,4 @@ def test_exclude_spam_from_public_views(self):
288315 )
289316 public_url = reverse ("core:event-list" )
290317 response = self .client .get (public_url )
291- self .assertNotContains (response , data ["title" ])
318+ self .assertNotContains (response , data ["title" ])
0 commit comments