8
8
9
9
10
10
class BulkSyncTests (TestCase ):
11
+ """ Test `bulk_sync` method """
12
+
11
13
def setUp (self ):
12
14
pass
13
15
@@ -75,6 +77,8 @@ def test_pk_set_but_keyfield_changes_ignores_pk(self):
75
77
76
78
77
79
class BulkCompareTests (TestCase ):
80
+ """ Test `bulk_compare` method """
81
+
78
82
@classmethod
79
83
def setUpTestData (cls ):
80
84
cls .c1 = Company .objects .create (name = "Foo Products, Ltd." )
@@ -107,7 +111,7 @@ def test_bulk_compare(self):
107
111
self .assertEqual ({new_objs [0 ]: {"age" : (40 , 41 )}}, ret ["updated_details" ])
108
112
self .assertEqual ([new_objs [1 ]], ret ["unchanged" ])
109
113
110
- def test_bulk_compare_with_ignore_fields (self ):
114
+ def test_bulk_compare_with_ignore_int_field (self ):
111
115
c1 = self .c1
112
116
e3 = self .e3
113
117
new_objs = self .new_objs
@@ -124,3 +128,21 @@ def test_bulk_compare_with_ignore_fields(self):
124
128
self .assertEqual ([], ret ["updated" ])
125
129
self .assertEqual ({}, ret ["updated_details" ])
126
130
self .assertEqual ([new_objs [0 ], new_objs [1 ]], ret ["unchanged" ])
131
+
132
+ def test_bulk_compare_with_ignore_relation_field (self ):
133
+ c1 = self .c1
134
+ e3 = self .e3
135
+ new_objs = self .new_objs
136
+
137
+ ret = bulk_compare (
138
+ old_models = Employee .objects .filter (company = c1 ).order_by ("name" ),
139
+ new_models = new_objs ,
140
+ key_fields = ("name" ,),
141
+ ignore_fields = ("company_id" ,),
142
+ )
143
+
144
+ self .assertEqual ([new_objs [2 ], new_objs [3 ]], ret ["added" ])
145
+ self .assertEqual ([e3 ], list (ret ["removed" ]))
146
+ self .assertEqual ([new_objs [0 ]], ret ["updated" ])
147
+ self .assertEqual ({new_objs [0 ]: {'age' : (40 , 41 )}}, ret ["updated_details" ])
148
+ self .assertEqual ([new_objs [1 ]], ret ["unchanged" ])
0 commit comments