Clean save_condition exception implementation and related tests
This commit is contained in:
parent
9c917c3bd3
commit
4034ab4182
@ -351,7 +351,7 @@ class Document(BaseDocument):
|
|||||||
upsert = save_condition is None
|
upsert = save_condition is None
|
||||||
last_error = collection.update(select_dict, update_query,
|
last_error = collection.update(select_dict, update_query,
|
||||||
upsert=upsert, **write_concern)
|
upsert=upsert, **write_concern)
|
||||||
if save_condition is not None and last_error['nModified'] == 0:
|
if not upsert and last_error['nModified'] == 0:
|
||||||
raise OperationError('Race condition preventing'
|
raise OperationError('Race condition preventing'
|
||||||
' document update detected')
|
' document update detected')
|
||||||
created = is_new_object(last_error)
|
created = is_new_object(last_error)
|
||||||
|
@ -958,8 +958,9 @@ class InstanceTest(unittest.TestCase):
|
|||||||
flip(w1)
|
flip(w1)
|
||||||
self.assertTrue(w1.toggle)
|
self.assertTrue(w1.toggle)
|
||||||
self.assertEqual(w1.count, 1)
|
self.assertEqual(w1.count, 1)
|
||||||
self.assertRaises(OperationError,
|
self.assertRaisesRegexp(OperationError,
|
||||||
w1.save, save_condition={'save_id': UUID(42)})
|
"Race condition preventing document update detected",
|
||||||
|
w1.save, save_condition={'save_id': UUID(42)})
|
||||||
w1.reload()
|
w1.reload()
|
||||||
self.assertFalse(w1.toggle)
|
self.assertFalse(w1.toggle)
|
||||||
self.assertEqual(w1.count, 0)
|
self.assertEqual(w1.count, 0)
|
||||||
@ -987,8 +988,9 @@ class InstanceTest(unittest.TestCase):
|
|||||||
self.assertEqual(w1.count, 2)
|
self.assertEqual(w1.count, 2)
|
||||||
flip(w2)
|
flip(w2)
|
||||||
flip(w2)
|
flip(w2)
|
||||||
self.assertRaises(OperationError,
|
self.assertRaisesRegexp(OperationError,
|
||||||
w2.save, save_condition={'save_id': old_id})
|
"Race condition preventing document update detected",
|
||||||
|
w2.save, save_condition={'save_id': old_id})
|
||||||
w2.reload()
|
w2.reload()
|
||||||
self.assertFalse(w2.toggle)
|
self.assertFalse(w2.toggle)
|
||||||
self.assertEqual(w2.count, 2)
|
self.assertEqual(w2.count, 2)
|
||||||
@ -1000,8 +1002,9 @@ class InstanceTest(unittest.TestCase):
|
|||||||
self.assertTrue(w1.toggle)
|
self.assertTrue(w1.toggle)
|
||||||
self.assertEqual(w1.count, 3)
|
self.assertEqual(w1.count, 3)
|
||||||
flip(w1)
|
flip(w1)
|
||||||
self.assertRaises(OperationError,
|
self.assertRaisesRegexp(OperationError,
|
||||||
w1.save, save_condition={'count__gte': w1.count})
|
"Race condition preventing document update detected",
|
||||||
|
w1.save, save_condition={'count__gte': w1.count})
|
||||||
w1.reload()
|
w1.reload()
|
||||||
self.assertTrue(w1.toggle)
|
self.assertTrue(w1.toggle)
|
||||||
self.assertEqual(w1.count, 3)
|
self.assertEqual(w1.count, 3)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user