PYTHON-272 adding simple test for token function and named_tables

This commit is contained in:
GregBestland
2016-03-25 15:42:09 -05:00
parent f4f3dc0972
commit 877281080b

View File

@@ -19,11 +19,13 @@ from cassandra.cqlengine import functions
from cassandra.cqlengine import query from cassandra.cqlengine import query
from cassandra.cqlengine.management import sync_table, drop_table from cassandra.cqlengine.management import sync_table, drop_table
from cassandra.cqlengine.models import Model from cassandra.cqlengine.models import Model
from cassandra.cqlengine.named import NamedTable
from cassandra.cqlengine.operators import EqualsOperator from cassandra.cqlengine.operators import EqualsOperator
from cassandra.cqlengine.statements import WhereClause from cassandra.cqlengine.statements import WhereClause
from tests.integration.cqlengine import DEFAULT_KEYSPACE
from tests.integration.cqlengine.base import BaseCassEngTestCase from tests.integration.cqlengine.base import BaseCassEngTestCase
class TestQuerySetOperation(BaseCassEngTestCase): class TestQuerySetOperation(BaseCassEngTestCase):
def test_maxtimeuuid_function(self): def test_maxtimeuuid_function(self):
@@ -54,7 +56,7 @@ class TestQuerySetOperation(BaseCassEngTestCase):
class TokenTestModel(Model): class TokenTestModel(Model):
__table_name__ = "token_test_model"
key = columns.Integer(primary_key=True) key = columns.Integer(primary_key=True)
val = columns.Integer() val = columns.Integer()
@@ -124,3 +126,27 @@ class TestTokenFunction(BaseCassEngTestCase):
# The # of arguments to Token must match the # of partition keys # The # of arguments to Token must match the # of partition keys
func = functions.Token('a') func = functions.Token('a')
self.assertRaises(query.QueryException, TestModel.objects.filter, pk__token__gt=func) self.assertRaises(query.QueryException, TestModel.objects.filter, pk__token__gt=func)
def test_named_table_pk_token_function(self):
"""
Test to ensure that token function work with named tables.
@since 3.2
@jira_ticket PYTHON-272
@expected_result partition key token functions should all for pagination. Prior to Python-272
this would fail with an AttributeError
@test_category object_mapper
"""
for i in range(5):
TokenTestModel.create(key=i, val=i)
named = NamedTable(DEFAULT_KEYSPACE, TokenTestModel.__table_name__)
query = named.objects.all().limit(1)
first_page = list(query)
last = first_page[-1]
self.assertTrue(len(first_page) is 1)
next_page = list(query.filter(pk__token__gt=functions.Token(last.key)))
self.assertTrue(len(next_page) is 1)