|
16 | 16 | except ImportError: |
17 | 17 | import unittest # noqa |
18 | 18 |
|
19 | | -from cassandra.cqlengine import columns |
| 19 | +from mock import patch |
| 20 | + |
| 21 | +from cassandra.cqlengine import columns, CQLEngineException |
20 | 22 | from cassandra.cqlengine.management import sync_table, drop_table, create_keyspace_simple, drop_keyspace |
21 | 23 | from cassandra.cqlengine.models import Model, ModelDefinitionException |
22 | 24 |
|
@@ -105,6 +107,25 @@ class table(Model): |
105 | 107 |
|
106 | 108 | drop_keyspace('keyspace') |
107 | 109 |
|
| 110 | + def test_column_family(self): |
| 111 | + class TestModel(Model): |
| 112 | + k = columns.Integer(primary_key=True) |
| 113 | + |
| 114 | + from cassandra.cqlengine import models |
| 115 | + # no model keyspace uses default |
| 116 | + self.assertEqual(TestModel.column_family_name(), "%s.test_model" % (models.DEFAULT_KEYSPACE,)) |
| 117 | + |
| 118 | + # model keyspace overrides |
| 119 | + TestModel.__keyspace__ = "my_test_keyspace" |
| 120 | + self.assertEqual(TestModel.column_family_name(), "%s.test_model" % (TestModel.__keyspace__,)) |
| 121 | + |
| 122 | + # neither set should raise CQLEngineException before failing or formatting an invalid name |
| 123 | + del TestModel.__keyspace__ |
| 124 | + with patch('cassandra.cqlengine.models.DEFAULT_KEYSPACE', None): |
| 125 | + self.assertRaises(CQLEngineException, TestModel.column_family_name) |
| 126 | + # .. but we can still get the bare CF name |
| 127 | + self.assertEqual(TestModel.column_family_name(include_keyspace=False), "test_model") |
| 128 | + |
108 | 129 |
|
109 | 130 | class BuiltInAttributeConflictTest(unittest.TestCase): |
110 | 131 | """tests Model definitions that conflict with built-in attributes/methods""" |
|
0 commit comments