not allowing non-models to be passed to sync_table

This commit is contained in:
Jon Haddad
2014-06-26 17:42:14 -07:00
parent 36c98d3f95
commit 96d91793eb
3 changed files with 15 additions and 3 deletions

View File

@@ -12,7 +12,7 @@ from collections import namedtuple
Field = namedtuple('Field', ['name', 'type'])
logger = logging.getLogger(__name__)
from cqlengine.models import Model
# system keyspaces
schema_columnfamilies = NamedTable('system', 'schema_columnfamilies')
@@ -74,9 +74,13 @@ def sync_table(model, create_missing_keyspace=True):
:type create_missing_keyspace: bool
"""
if not issubclass(model, Model):
raise CQLEngineException("Models must be derived from base Model.")
if model.__abstract__:
raise CQLEngineException("cannot create table from abstract model")
#construct query string
cf_name = model.column_family_name()
raw_cf_name = model.column_family_name(include_keyspace=False)

View File

@@ -1,4 +1,4 @@
from cqlengine.exceptions import CQLEngineException
from cqlengine.management import get_fields, sync_table, drop_table
from cqlengine.tests.base import BaseCassEngTestCase
from cqlengine import management
@@ -140,3 +140,11 @@ class SyncTableTests(BaseCassEngTestCase):
table_settings = management.get_table_settings(PrimaryKeysOnlyModel)
assert SizeTieredCompactionStrategy in table_settings.options['compaction_strategy_class']
class NonModelFailureTest(BaseCassEngTestCase):
class FakeModel(object):
pass
def test_failure(self):
with self.assertRaises(CQLEngineException):
sync_table(self.FakeModel)