thegeorgeous/flask-cqlalchemy

View on GitHub
tests/test_abstract_model.py

Summary

Maintainability
A
0 mins
Test Coverage
import unittest
from uuid import uuid1
 
from .test_cqlalchemy import BaseTestCase
 
 
def make_abstract_model(db):
Line too long (98 > 79 characters)
"""Taken from https://datastax.github.io/python-driver/cqlengine/models.html#model-inheritance
but where we want the base classes to be in separate tables
"""
 
class Pet(db.Model):
__abstract__ = True
# __table_name__ = 'pet'
owner_id = db.columns.UUID(primary_key=True)
pet_id = db.columns.UUID(primary_key=True)
pet_type = db.columns.Text(discriminator_column=True)
name = db.columns.Text()
 
def eat(self, food):
pass
 
def sleep(self, time):
pass
 
class Cat(Pet):
# __discriminator_value__ = 'cat'
cuteness = db.columns.Float()
 
def tear_up_couch(self):
pass
 
class Dog(Pet):
# __discriminator_value__ = 'dog'
fierceness = db.columns.Float()
 
def bark_all_night(self):
pass
 
return Pet, Cat, Dog
 
 
class AbstractModelTest(BaseTestCase):
 
def test_sync_db(self):
(Pet, Cat, Dog) = make_abstract_model(self.db)
self.db.sync_db()
mycat = Cat.create(owner_id=uuid1(),
pet_id=uuid1(),
name="Tiddles",
cuteness=9001)
self.assertTrue(isinstance(mycat, Cat))
self.assertEqual(mycat.cuteness, 9001)
 
 
if __name__ == '__main__':
unittest.main()