Merge pull request #533 from datastax/272-test
PYTHON-272 adding simple test for token function and named_tables
This commit is contained in:
		@@ -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)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user