1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
|
import sqlalchemy as sa
from pytest import raises
from sqlalchemy.ext.hybrid import hybrid_property
from tests import ModelFormTestCase
from wtforms_alchemy import ModelForm
from wtforms_alchemy.exc import AttributeTypeException
class TestHybridProperties(ModelFormTestCase):
def test_hybrid_property_returning_column_property(self):
class ModelTest(self.base):
__tablename__ = "model_test"
id = sa.Column(sa.Integer, primary_key=True)
_test_column = sa.Column("test_column", sa.Boolean, nullable=False)
@hybrid_property
def test_column_hybrid(self):
return self._test_column
@test_column_hybrid.setter
def test_column_hybrid(self, value):
self._test_column = value
class ModelTestForm(ModelForm):
class Meta:
model = ModelTest
not_null_str_validator = None
not_null_validator = None
include = ("test_column_hybrid",)
exclude = ("_test_column",)
form = ModelTestForm()
assert form.test_column_hybrid
def test_hybrid_property_returning_expression(self):
class ModelTest(self.base):
__tablename__ = "model_test"
id = sa.Column(sa.Integer, primary_key=True)
_test_column = sa.Column("test_column", sa.Boolean, nullable=False)
@hybrid_property
def test_column_hybrid(self):
return self._test_column + self._test_column
@test_column_hybrid.setter
def test_column_hybrid(self, value):
self._test_column = value
with raises(AttributeTypeException):
class ModelTestForm(ModelForm):
class Meta:
model = ModelTest
not_null_str_validator = None
not_null_validator = None
include = ("test_column_hybrid",)
exclude = ("_test_column",)
|