11
11
from django .contrib .auth .models import User
12
12
from django .contrib .contenttypes .models import ContentType
13
13
import bs4
14
- from test_app .models import TestModel , TestForeignKey , TestM2M
14
+ from test_app .models import (
15
+ TestModel , TestForeignKey , TestM2M ,
16
+ TestBigIntModel , TestBigIntForeignKey , TestBigIntM2M ,
17
+ TestUUIDModel , TestUUIDForeignKey , TestUUIDM2M
18
+ )
15
19
from easyaudit .models import CRUDEvent
16
20
from easyaudit .middleware .easyaudit import set_current_user , clear_request
17
21
22
26
TEST_ADMIN_PASSWORD = 'password'
23
27
24
28
29
+ @override_settings (TEST = True )
30
+ class TestDjangoCompat (TestCase ):
31
+
32
+ def test_model_state (self ):
33
+ """Ensures models have the internal `_state` object."""
34
+ inst = TestModel ()
35
+ self .assertTrue (hasattr (inst , '_state' ))
36
+
37
+
25
38
@override_settings (TEST = True )
26
39
class TestAuditModels (TestCase ):
40
+ Model = TestModel
41
+ FKModel = TestForeignKey
42
+ M2MModel = TestM2M
27
43
28
44
def test_create_model (self ):
29
- obj = TestModel .objects .create ()
30
- self .assertEqual (obj .id , 1 )
45
+ obj = self .Model .objects .create ()
31
46
crud_event_qs = CRUDEvent .objects .filter (object_id = obj .id , content_type = ContentType .objects .get_for_model (obj ))
32
47
self .assertEqual (1 , crud_event_qs .count ())
33
48
crud_event = crud_event_qs [0 ]
34
49
data = json .loads (crud_event .object_json_repr )[0 ]
35
50
self .assertEqual (data ['fields' ]['name' ], obj .name )
36
51
37
52
def test_fk_model (self ):
38
- obj = TestModel .objects .create ()
39
- obj_fk = TestForeignKey (name = 'test' , test_fk = obj )
53
+ obj = self . Model .objects .create ()
54
+ obj_fk = self . FKModel (name = 'test' , test_fk = obj )
40
55
obj_fk .save ()
41
56
crud_event = CRUDEvent .objects .filter (object_id = obj_fk .id , content_type = ContentType .objects .get_for_model (obj_fk ))[0 ]
42
57
data = json .loads (crud_event .object_json_repr )[0 ]
43
- self .assertEqual (data ['fields' ]['test_fk' ], obj .id )
58
+ self .assertEqual (str ( data ['fields' ]['test_fk' ]), str ( obj .id ) )
44
59
45
60
def test_m2m_model (self ):
46
- obj = TestModel .objects .create ()
47
- obj_m2m = TestM2M (name = 'test' )
61
+ obj = self . Model .objects .create ()
62
+ obj_m2m = self . M2MModel (name = 'test' )
48
63
obj_m2m .save ()
49
64
obj_m2m .test_m2m .add (obj )
50
65
crud_event = CRUDEvent .objects .filter (object_id = obj_m2m .id , content_type = ContentType .objects .get_for_model (obj_m2m ))[0 ]
51
66
data = json .loads (crud_event .object_json_repr )[0 ]
52
- self .assertEqual (data ['fields' ]['test_m2m' ], [obj .id ])
67
+ self .assertEqual ([ str ( d ) for d in data ['fields' ]['test_m2m' ]] , [str ( obj .id ) ])
53
68
54
69
@override_settings (DJANGO_EASY_AUDIT_CRUD_EVENT_NO_CHANGED_FIELDS_SKIP = True )
55
70
def test_update_skip_no_changed_fields (self ):
56
- obj = TestModel .objects .create ()
71
+ obj = self . Model .objects .create ()
57
72
crud_event_qs = CRUDEvent .objects .filter (object_id = obj .id , content_type = ContentType .objects .get_for_model (obj ))
58
73
self .assertEqual (1 , crud_event_qs .count ())
59
74
obj .name = 'changed name'
@@ -63,7 +78,7 @@ def test_update_skip_no_changed_fields(self):
63
78
self .assertIn ('name' , last_change .changed_fields )
64
79
65
80
def test_update (self ):
66
- obj = TestModel .objects .create ()
81
+ obj = self . Model .objects .create ()
67
82
crud_event_qs = CRUDEvent .objects .filter (object_id = obj .id , content_type = ContentType .objects .get_for_model (obj ))
68
83
self .assertEqual (1 , crud_event_qs .count ())
69
84
obj .name = 'changed name'
@@ -74,17 +89,39 @@ def test_update(self):
74
89
75
90
@override_settings (DJANGO_EASY_AUDIT_CRUD_EVENT_NO_CHANGED_FIELDS_SKIP = True )
76
91
def test_fake_update_skip_no_changed_fields (self ):
77
- obj = TestModel .objects .create ()
92
+ obj = self . Model .objects .create ()
78
93
crud_event_qs = CRUDEvent .objects .filter (object_id = obj .id , content_type = ContentType .objects .get_for_model (obj ))
79
94
obj .save ()
80
95
self .assertEqual (1 , crud_event_qs .count ())
81
96
82
97
def test_fake_update (self ):
83
- obj = TestModel .objects .create ()
98
+ obj = self . Model .objects .create ()
84
99
crud_event_qs = CRUDEvent .objects .filter (object_id = obj .id , content_type = ContentType .objects .get_for_model (obj ))
85
100
obj .save ()
86
101
self .assertEqual (2 , crud_event_qs .count ())
87
102
103
+ def test_delete (self ):
104
+ obj = self .Model .objects .create ()
105
+ crud_event_qs = CRUDEvent .objects .filter (object_id = obj .id , content_type = ContentType .objects .get_for_model (obj ))
106
+ self .assertEqual (1 , crud_event_qs .count ())
107
+
108
+ obj_id = obj .pk
109
+ obj .delete ()
110
+ crud_event_qs = CRUDEvent .objects .filter (object_id = obj_id , content_type = ContentType .objects .get_for_model (obj ))
111
+ self .assertEqual (2 , crud_event_qs .count ())
112
+
113
+
114
+ class TestAuditUUIDModels (TestAuditModels ):
115
+ Model = TestUUIDModel
116
+ FKModel = TestUUIDForeignKey
117
+ M2MModel = TestUUIDM2M
118
+
119
+
120
+ class TestAuditBigIntModels (TestAuditModels ):
121
+ Model = TestBigIntModel
122
+ FKModel = TestBigIntForeignKey
123
+ M2MModel = TestBigIntM2M
124
+
88
125
89
126
@override_settings (TEST = True )
90
127
class TestMiddleware (TestCase ):
0 commit comments