cqle: integration tests for conditional deletes

(and updates to None)

PYTHON-249
This commit is contained in:
Adam Holmberg
2016-03-17 14:50:06 -05:00
parent 248ac90af1
commit 0f3132d31a

View File

@@ -134,3 +134,45 @@ class TestTransaction(BaseCassEngTestCase):
updated = TestTransactionModel.objects(id=id).first() updated = TestTransactionModel.objects(id=id).first()
self.assertEqual(updated.text, 'something else') self.assertEqual(updated.text, 'something else')
def test_delete_transaction(self):
# DML path
t = TestTransactionModel.create(text='something', count=5)
self.assertEqual(TestTransactionModel.objects(id=t.id).count(), 1)
with self.assertRaises(LWTException):
t.iff(count=9999).delete()
self.assertEqual(TestTransactionModel.objects(id=t.id).count(), 1)
t.iff(count=5).delete()
self.assertEqual(TestTransactionModel.objects(id=t.id).count(), 0)
# QuerySet path
t = TestTransactionModel.create(text='something', count=5)
self.assertEqual(TestTransactionModel.objects(id=t.id).count(), 1)
with self.assertRaises(LWTException):
TestTransactionModel.objects(id=t.id).iff(count=9999).delete()
self.assertEqual(TestTransactionModel.objects(id=t.id).count(), 1)
TestTransactionModel.objects(id=t.id).iff(count=5).delete()
self.assertEqual(TestTransactionModel.objects(id=t.id).count(), 0)
def test_update_to_none(self):
# This test is done because updates to none are split into deletes
# for old versions of cassandra. Can be removed when we drop that code
# https://github.com/datastax/python-driver/blob/3.1.1/cassandra/cqlengine/query.py#L1197-L1200
# DML path
t = TestTransactionModel.create(text='something', count=5)
self.assertEqual(TestTransactionModel.objects(id=t.id).count(), 1)
with self.assertRaises(LWTException):
t.iff(count=9999).update(text=None)
self.assertIsNotNone(TestTransactionModel.objects(id=t.id).first().text)
t.iff(count=5).update(text=None)
self.assertIsNone(TestTransactionModel.objects(id=t.id).first().text)
# QuerySet path
t = TestTransactionModel.create(text='something', count=5)
self.assertEqual(TestTransactionModel.objects(id=t.id).count(), 1)
with self.assertRaises(LWTException):
TestTransactionModel.objects(id=t.id).iff(count=9999).update(text=None)
self.assertIsNotNone(TestTransactionModel.objects(id=t.id).first().text)
TestTransactionModel.objects(id=t.id).iff(count=5).update(text=None)
self.assertIsNone(TestTransactionModel.objects(id=t.id).first().text)