Changed DEFAULT_TTL to __default_ttl__ and added tests.
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
Reference in New Issue
Block a user