@@ -162,9 +162,13 @@ 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 (
168+ event .spam_moderation .status , SpamModeration .Status .SPAM_LIKELY
169+ )
167170 self .assertEqual (event .spam_moderation .detection_method , "honeypot" )
171+ self .assertTrue (event .is_marked_spam )
168172
169173 def test_job_creation_with_timer_spam (self ):
170174 # FIXME: should incorporate how long a typical request takes to resolve
@@ -179,9 +183,11 @@ def test_job_creation_with_timer_spam(self):
179183 )
180184 self .assertResponseCreated (response )
181185 job = Job .objects .get (title = data ["title" ])
182- self . assertTrue ( job . is_marked_spam )
186+
183187 self .assertIsNotNone (job .spam_moderation )
188+ self .assertEqual (job .spam_moderation .status , SpamModeration .Status .SPAM_LIKELY )
184189 self .assertEqual (job .spam_moderation .detection_method , "form_submit_time" )
190+ self .assertTrue (job .is_marked_spam )
185191
186192 def test_mark_spam (self ):
187193 data = self .event_factory .get_request_data ()
@@ -193,18 +199,29 @@ def test_mark_spam(self):
193199 format = "json" ,
194200 )
195201 event = Event .objects .get (title = data ["title" ])
202+ self .assertIsNotNone (event .spam_moderation )
203+ self .assertEqual (
204+ event .spam_moderation .status , SpamModeration .Status .SCHEDULED_FOR_CHECK
205+ )
206+ # by default, all created objects will have is_marked_spam = False unless spam_moderation.status is explicitly SPAM or SPAM_LIKELY
196207 self .assertFalse (event .is_marked_spam )
197- self . assertIsNone ( event . spam_moderation )
208+
198209 response = self .client .post (
199210 reverse ("core:event-mark-spam" , kwargs = {"pk" : event .id }),
200211 data ,
201212 HTTP_ACCEPT = "application/json" ,
202213 format = "json" ,
203214 )
215+
204216 event .refresh_from_db ()
205- # non-moderators cannot mark content as spam
217+ # non-moderators cannot mark content as spam (set status to SPAM)
206218 self .assertEquals (response .status_code , 403 )
219+ self .assertIsNotNone (event .spam_moderation )
220+ self .assertEqual (
221+ event .spam_moderation .status , SpamModeration .Status .SCHEDULED_FOR_CHECK
222+ )
207223 self .assertFalse (event .is_marked_spam )
224+
208225 # check moderator
209226 self .client .login (
210227 username = self .moderator .username , password = self .user_factory .password
@@ -217,12 +234,17 @@ def test_mark_spam(self):
217234 format = "json" ,
218235 )
219236 event .refresh_from_db ()
220- self .assertTrue (event .is_marked_spam )
221237 self .assertIsNotNone (event .spam_moderation )
238+ self .assertEqual (event .spam_moderation .status , SpamModeration .Status .SPAM )
239+ self .assertTrue (event .is_marked_spam )
240+
222241 event .mark_not_spam (self .moderator )
223242 event .refresh_from_db ()
224- self . assertFalse ( event . is_marked_spam )
243+
225244 self .assertIsNotNone (event .spam_moderation )
245+ self .assertEqual (event .spam_moderation .status , SpamModeration .Status .NOT_SPAM )
246+ self .assertFalse (event .is_marked_spam )
247+
226248 # check superuser
227249 self .client .login (
228250 username = self .superuser .username , password = self .user_factory .password
@@ -234,9 +256,10 @@ def test_mark_spam(self):
234256 format = "json" ,
235257 )
236258 event .refresh_from_db ()
237- self . assertTrue ( event . is_marked_spam )
259+
238260 self .assertIsNotNone (event .spam_moderation )
239261 self .assertEqual (event .spam_moderation .status , SpamModeration .Status .SPAM )
262+ self .assertTrue (event .is_marked_spam )
240263
241264 def test_event_creation_without_spam (self ):
242265 data = self .event_factory .get_request_data ()
@@ -248,8 +271,12 @@ def test_event_creation_without_spam(self):
248271 )
249272 self .assertResponseCreated (response )
250273 event = Event .objects .get (title = data ["title" ])
274+
275+ self .assertIsNotNone (event .spam_moderation )
276+ self .assertEqual (
277+ event .spam_moderation .status , SpamModeration .Status .SCHEDULED_FOR_CHECK
278+ )
251279 self .assertFalse (event .is_marked_spam )
252- self .assertIsNone (event .spam_moderation )
253280
254281 def test_job_update_with_spam (self ):
255282 data = self .job_factory .get_request_data ()
@@ -261,8 +288,13 @@ def test_job_update_with_spam(self):
261288 )
262289 self .assertResponseCreated (response )
263290 job = Job .objects .get (title = data ["title" ])
291+
292+ self .assertIsNotNone (job .spam_moderation )
293+ self .assertEqual (
294+ job .spam_moderation .status , SpamModeration .Status .SCHEDULED_FOR_CHECK
295+ )
264296 self .assertFalse (job .is_marked_spam )
265- self . assertIsNone ( job . spam_moderation )
297+
266298 data = self .job_factory .get_request_data (
267299 honeypot_value = "spammy content" ,
268300 elapsed_time = settings .SPAM_LIKELY_SECONDS_THRESHOLD + 1 ,
@@ -274,9 +306,11 @@ def test_job_update_with_spam(self):
274306 format = "json" ,
275307 )
276308 job .refresh_from_db ()
277- self . assertTrue ( job . is_marked_spam )
309+
278310 self .assertIsNotNone (job .spam_moderation )
311+ self .assertEqual (job .spam_moderation .status , SpamModeration .Status .SPAM_LIKELY )
279312 self .assertEqual (job .spam_moderation .detection_method , "honeypot" )
313+ self .assertTrue (job .is_marked_spam )
280314
281315 def test_exclude_spam_from_public_views (self ):
282316 data = self .event_factory .get_request_data (honeypot_value = "spammy content" )
0 commit comments