1111from django .contrib .auth .models import User
1212from django .contrib .contenttypes .models import ContentType
1313import 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+ )
1519from easyaudit .models import CRUDEvent
1620from easyaudit .middleware .easyaudit import set_current_user , clear_request
1721
2226TEST_ADMIN_PASSWORD = 'password'
2327
2428
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+
2538@override_settings (TEST = True )
2639class TestAuditModels (TestCase ):
40+ Model = TestModel
41+ FKModel = TestForeignKey
42+ M2MModel = TestM2M
2743
2844 def test_create_model (self ):
29- obj = TestModel .objects .create ()
30- self .assertEqual (obj .id , 1 )
45+ obj = self .Model .objects .create ()
3146 crud_event_qs = CRUDEvent .objects .filter (object_id = obj .id , content_type = ContentType .objects .get_for_model (obj ))
3247 self .assertEqual (1 , crud_event_qs .count ())
3348 crud_event = crud_event_qs [0 ]
3449 data = json .loads (crud_event .object_json_repr )[0 ]
3550 self .assertEqual (data ['fields' ]['name' ], obj .name )
3651
3752 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 )
4055 obj_fk .save ()
4156 crud_event = CRUDEvent .objects .filter (object_id = obj_fk .id , content_type = ContentType .objects .get_for_model (obj_fk ))[0 ]
4257 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 ) )
4459
4560 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' )
4863 obj_m2m .save ()
4964 obj_m2m .test_m2m .add (obj )
5065 crud_event = CRUDEvent .objects .filter (object_id = obj_m2m .id , content_type = ContentType .objects .get_for_model (obj_m2m ))[0 ]
5166 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 ) ])
5368
5469 @override_settings (DJANGO_EASY_AUDIT_CRUD_EVENT_NO_CHANGED_FIELDS_SKIP = True )
5570 def test_update_skip_no_changed_fields (self ):
56- obj = TestModel .objects .create ()
71+ obj = self . Model .objects .create ()
5772 crud_event_qs = CRUDEvent .objects .filter (object_id = obj .id , content_type = ContentType .objects .get_for_model (obj ))
5873 self .assertEqual (1 , crud_event_qs .count ())
5974 obj .name = 'changed name'
@@ -63,7 +78,7 @@ def test_update_skip_no_changed_fields(self):
6378 self .assertIn ('name' , last_change .changed_fields )
6479
6580 def test_update (self ):
66- obj = TestModel .objects .create ()
81+ obj = self . Model .objects .create ()
6782 crud_event_qs = CRUDEvent .objects .filter (object_id = obj .id , content_type = ContentType .objects .get_for_model (obj ))
6883 self .assertEqual (1 , crud_event_qs .count ())
6984 obj .name = 'changed name'
@@ -74,17 +89,39 @@ def test_update(self):
7489
7590 @override_settings (DJANGO_EASY_AUDIT_CRUD_EVENT_NO_CHANGED_FIELDS_SKIP = True )
7691 def test_fake_update_skip_no_changed_fields (self ):
77- obj = TestModel .objects .create ()
92+ obj = self . Model .objects .create ()
7893 crud_event_qs = CRUDEvent .objects .filter (object_id = obj .id , content_type = ContentType .objects .get_for_model (obj ))
7994 obj .save ()
8095 self .assertEqual (1 , crud_event_qs .count ())
8196
8297 def test_fake_update (self ):
83- obj = TestModel .objects .create ()
98+ obj = self . Model .objects .create ()
8499 crud_event_qs = CRUDEvent .objects .filter (object_id = obj .id , content_type = ContentType .objects .get_for_model (obj ))
85100 obj .save ()
86101 self .assertEqual (2 , crud_event_qs .count ())
87102
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+
88125
89126@override_settings (TEST = True )
90127class TestMiddleware (TestCase ):
0 commit comments