def test_more_than_one_preparer(self): """ With more than one attribute, make sure all are applied and working """ class Dummy(Base): __tablename__ = "dummy" name = Column(String) price = Column(Float) @staticmethod def name_preparer(value): return value.upper() @staticmethod def price_preparer(value): return value * float(1.21) @staticmethod def global_preparer(value): value['name'] = '{}-{}'.format(value['name'], value['price']) return value schema_setup(None, Dummy) appstruct = Dummy.deserialize(dict(name='Name', price=float(100))) self.assertEqual(appstruct.price, float(121.0)) self.assertEqual(appstruct.name, 'NAME-121.0')
def test_global_default_preparers(self): """ If a global preparer and a default preparer is defined, they should be applied automatically """ class Dummy(Base): __tablename__ = "dummy" name = Column(String) @staticmethod def global_preparer(value): value['name'] = '{}-000'.format(value['name']) return value @staticmethod def name_preparer(value): return value.upper() schema_setup(None, Dummy) appstruct = Dummy.deserialize(dict(name='Name')) self.assertEqual(appstruct.name, 'NAME-000')