@@ -118,9 +118,17 @@ def test_skip_deletes(self):
118
118
# but Isaac should remain when the skip_deletes flag is True
119
119
ret = bulk_sync (new_models = new_objs , filters = None , key_fields = ("name" ,), skip_deletes = True )
120
120
121
- self .assertEqual (2 , Employee .objects .count ())
122
121
self .assertEqual (["Scott" , "Isaac" ], [x .name for x in Employee .objects .all ().order_by ('id' )])
123
122
123
+ new_e1 = Employee .objects .get (id = e1 .id )
124
+ self .assertEqual (41 , new_e1 .age )
125
+
126
+ self .assertEqual (2 , Employee .objects .count ())
127
+
128
+ self .assertEqual (1 , ret ["stats" ]["updated" ])
129
+ self .assertEqual (0 , ret ["stats" ]["created" ])
130
+ self .assertEqual (0 , ret ["stats" ]["deleted" ])
131
+
124
132
def test_skip_creates (self ):
125
133
c1 = Company .objects .create (name = "My Company LLC" )
126
134
@@ -137,15 +145,20 @@ def test_skip_creates(self):
137
145
self .assertEqual (2 , Employee .objects .count ())
138
146
self .assertEqual (["Scott" , "Isaac" ], [x .name for x in Employee .objects .all ().order_by ('id' )])
139
147
148
+ self .assertEqual (0 , ret ["stats" ]["updated" ])
149
+ self .assertEqual (0 , ret ["stats" ]["created" ])
150
+ self .assertEqual (0 , ret ["stats" ]["deleted" ])
151
+
140
152
def test_skip_updates (self ):
141
153
c1 = Company .objects .create (name = "My Company LLC" )
142
154
143
155
e1 = Employee .objects .create (name = "Scott" , age = 40 , company = c1 )
144
156
e2 = Employee .objects .create (name = "Isaac" , age = 9 , company = c1 )
145
157
146
- # create a new employee that will be ignored
158
+ # update employee that will be ignored, create a new one
147
159
new_objs = [
148
- Employee (name = "Scott" , age = 100 , company = c1 )
160
+ Employee (name = "Scott" , age = 100 , company = c1 ),
161
+ Employee (name = "Alice" , age = 36 , company = c1 )
149
162
]
150
163
151
164
ret = bulk_sync (new_models = new_objs , filters = None , key_fields = ("name" ,), skip_updates = True )
@@ -154,6 +167,15 @@ def test_skip_updates(self):
154
167
new_e1 = Employee .objects .get (id = e1 .id )
155
168
self .assertEqual (40 , new_e1 .age )
156
169
170
+ # Isaac is "stale" object - was deleted, Alice was created
171
+ self .assertEqual (2 , Employee .objects .count ())
172
+ self .assertEqual (["Scott" , "Alice" ], [x .name for x in Employee .objects .all ().order_by ('id' )])
173
+
174
+
175
+ self .assertEqual (0 , ret ["stats" ]["updated" ])
176
+ self .assertEqual (1 , ret ["stats" ]["created" ])
177
+ self .assertEqual (1 , ret ["stats" ]["deleted" ])
178
+
157
179
158
180
159
181
class BulkCompareTests (TestCase ):
0 commit comments