5
5
from django .contrib .admin .utils import quote
6
6
from django .contrib .auth .models import User
7
7
from django .contrib .contenttypes .models import ContentType
8
+ from django .db .models .signals import post_save , pre_save
8
9
from django .test import TestCase , override_settings
9
10
from django .urls import reverse
10
11
from django .utils import translation
@@ -41,11 +42,23 @@ def setUpTestData(cls):
41
42
[cls .a1 ],
42
43
CHANGE ,
43
44
change_message = "Changed something" ,
44
- single_object = True ,
45
45
)
46
46
47
47
def setUp (self ):
48
48
self .client .force_login (self .user )
49
+ self .signals = []
50
+
51
+ pre_save .connect (self .pre_save_listener , sender = LogEntry )
52
+ self .addCleanup (pre_save .disconnect , self .pre_save_listener , sender = LogEntry )
53
+
54
+ post_save .connect (self .post_save_listener , sender = LogEntry )
55
+ self .addCleanup (post_save .disconnect , self .post_save_listener , sender = LogEntry )
56
+
57
+ def pre_save_listener (self , instance , ** kwargs ):
58
+ self .signals .append (("pre_save" , instance ))
59
+
60
+ def post_save_listener (self , instance , created , ** kwargs ):
61
+ self .signals .append (("post_save" , instance , created ))
49
62
50
63
def test_logentry_save (self ):
51
64
"""
@@ -271,6 +284,7 @@ def test_log_actions(self):
271
284
for obj in queryset
272
285
]
273
286
self .assertSequenceEqual (logs , expected_log_values )
287
+ self .assertEqual (self .signals , [])
274
288
275
289
def test_recentactions_without_content_type (self ):
276
290
"""
@@ -314,6 +328,8 @@ def test_proxy_model_content_type_is_used_for_log_entries(self):
314
328
"created_1" : "00:00" ,
315
329
}
316
330
changelist_url = reverse ("admin:admin_utils_articleproxy_changelist" )
331
+ expected_signals = []
332
+ self .assertEqual (self .signals , expected_signals )
317
333
318
334
# add
319
335
proxy_add_url = reverse ("admin:admin_utils_articleproxy_add" )
@@ -322,6 +338,10 @@ def test_proxy_model_content_type_is_used_for_log_entries(self):
322
338
proxy_addition_log = LogEntry .objects .latest ("id" )
323
339
self .assertEqual (proxy_addition_log .action_flag , ADDITION )
324
340
self .assertEqual (proxy_addition_log .content_type , proxy_content_type )
341
+ expected_signals .extend (
342
+ [("pre_save" , proxy_addition_log ), ("post_save" , proxy_addition_log , True )]
343
+ )
344
+ self .assertEqual (self .signals , expected_signals )
325
345
326
346
# change
327
347
article_id = proxy_addition_log .object_id
@@ -334,6 +354,10 @@ def test_proxy_model_content_type_is_used_for_log_entries(self):
334
354
proxy_change_log = LogEntry .objects .latest ("id" )
335
355
self .assertEqual (proxy_change_log .action_flag , CHANGE )
336
356
self .assertEqual (proxy_change_log .content_type , proxy_content_type )
357
+ expected_signals .extend (
358
+ [("pre_save" , proxy_change_log ), ("post_save" , proxy_change_log , True )]
359
+ )
360
+ self .assertEqual (self .signals , expected_signals )
337
361
338
362
# delete
339
363
proxy_delete_url = reverse (
@@ -344,6 +368,10 @@ def test_proxy_model_content_type_is_used_for_log_entries(self):
344
368
proxy_delete_log = LogEntry .objects .latest ("id" )
345
369
self .assertEqual (proxy_delete_log .action_flag , DELETION )
346
370
self .assertEqual (proxy_delete_log .content_type , proxy_content_type )
371
+ expected_signals .extend (
372
+ [("pre_save" , proxy_delete_log ), ("post_save" , proxy_delete_log , True )]
373
+ )
374
+ self .assertEqual (self .signals , expected_signals )
347
375
348
376
def test_action_flag_choices (self ):
349
377
tests = ((1 , "Addition" ), (2 , "Change" ), (3 , "Deletion" ))
@@ -358,15 +386,13 @@ def test_hook_get_log_entries(self):
358
386
[self .a1 ],
359
387
CHANGE ,
360
388
change_message = "Article changed message" ,
361
- single_object = True ,
362
389
)
363
390
c1 = Car .objects .create ()
364
391
LogEntry .objects .log_actions (
365
392
self .user .pk ,
366
393
[c1 ],
367
394
ADDITION ,
368
395
change_message = "Car created message" ,
369
- single_object = True ,
370
396
)
371
397
exp_str_article = escape (str (self .a1 ))
372
398
exp_str_car = escape (str (c1 ))
0 commit comments