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.management import sync_table, drop_table
from cassandra.cqlengine.models import Model
from cassandra.cqlengine.named import NamedTable
from cassandra.cqlengine.operators import EqualsOperator
from cassandra.cqlengine.statements import WhereClause
from tests.integration.cqlengine import DEFAULT_KEYSPACE
from tests.integration.cqlengine.base import BaseCassEngTestCase
class TestQuerySetOperation(BaseCassEngTestCase):
def test_maxtimeuuid_function(self):
@@ -54,7 +56,7 @@ class TestQuerySetOperation(BaseCassEngTestCase):
class TokenTestModel(Model):
__table_name__ = "token_test_model"
key = columns.Integer(primary_key=True)
val = columns.Integer()
@@ -124,3 +126,27 @@ class TestTokenFunction(BaseCassEngTestCase):
# The # of arguments to Token must match the # of partition keys
func = functions.Token('a')
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)