예제 #1
0
    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')
예제 #2
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')