Merge pull request #533 from datastax/272-test

PYTHON-272 adding simple test for token function and named_tables
This commit is contained in:
Greg Bestland
2016-04-04 19:23:09 +00:00

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)