Changed DEFAULT_TTL to __default_ttl__ and added tests.

This commit is contained in:
Greg Doermann
2014-07-31 10:15:06 -06:00
parent 0f827bc5e3
commit 3ae0d633b2
3 changed files with 67 additions and 5 deletions

View File

@@ -258,7 +258,7 @@ class BaseModel(object):
__queryset__ = ModelQuerySet
__dmlquery__ = DMLQuery
#__ttl__ = None # this doesn't seem to be used
__default_ttl__ = None # default ttl value to use
__consistency__ = None # can be set per query
# Additional table properties
@@ -278,7 +278,7 @@ class BaseModel(object):
def __init__(self, **values):
self._values = {}
self._ttl = getattr(self, 'DEFAULT_TTL', None)
self._ttl = self.__default_ttl__
self._timestamp = None
for name, column in self._columns.items():
@@ -535,7 +535,7 @@ class BaseModel(object):
v.reset_previous_value()
self._is_persisted = True
self._ttl = getattr(self, 'DEFAULT_TTL', None)
self._ttl = self.__default_ttl__
self._timestamp = None
return self
@@ -573,7 +573,7 @@ class BaseModel(object):
v.reset_previous_value()
self._is_persisted = True
self._ttl = getattr(self, 'DEFAULT_TTL', None)
self._ttl = self.__default_ttl__
self._timestamp = None
return self

View File

@@ -219,7 +219,7 @@ class AbstractQuerySet(object):
self._result_idx = None
self._batch = None
self._ttl = getattr(self, 'DEFAULT_TTL', None)
self._ttl = getattr(model, '__default_ttl__', None)
self._consistency = None
self._timestamp = None

View File

@@ -27,6 +27,28 @@ class BaseTTLTest(BaseCassEngTestCase):
drop_table(TestTTLModel)
class TestDefaultTTLModel(Model):
__keyspace__ = 'test'
__default_ttl__ = 20
id = columns.UUID(primary_key=True, default=lambda:uuid4())
count = columns.Integer()
text = columns.Text(required=False)
class BaseDefaultTTLTest(BaseCassEngTestCase):
@classmethod
def setUpClass(cls):
super(BaseDefaultTTLTest, cls).setUpClass()
sync_table(TestDefaultTTLModel)
sync_table(TestTTLModel)
@classmethod
def tearDownClass(cls):
super(BaseDefaultTTLTest, cls).tearDownClass()
drop_table(TestDefaultTTLModel)
drop_table(TestTTLModel)
class TTLQueryTests(BaseTTLTest):
@@ -117,5 +139,45 @@ class TTLBlindUpdateTest(BaseTTLTest):
self.assertIn("USING TTL", query)
class TTLDefaultTest(BaseDefaultTTLTest):
def test_default_ttl_not_set(self):
session = get_session()
o = TestTTLModel.create(text="some text")
tid = o.id
self.assertIsNone(o._ttl)
with mock.patch.object(session, 'execute') as m:
TestTTLModel.objects(id=tid).update(text="aligators")
query = m.call_args[0][0].query_string
self.assertNotIn("USING TTL", query)
def test_default_ttl_set(self):
session = get_session()
o = TestDefaultTTLModel.create(text="some text on ttl")
tid = o.id
self.assertEqual(o._ttl, TestDefaultTTLModel.__default_ttl__)
with mock.patch.object(session, 'execute') as m:
TestDefaultTTLModel.objects(id=tid).update(text="aligators expired")
query = m.call_args[0][0].query_string
self.assertIn("USING TTL", query)
def test_override_default_ttl(self):
session = get_session()
o = TestDefaultTTLModel.create(text="some text on ttl")
tid = o.id
self.assertEqual(o._ttl, TestDefaultTTLModel.__default_ttl__)
o.ttl(3600)
self.assertEqual(o._ttl, 3600)
with mock.patch.object(session, 'execute') as m:
TestDefaultTTLModel.objects(id=tid).ttl(None).update(text="aligators expired")
query = m.call_args[0][0].query_string
self.assertNotIn("USING TTL", query)