コード例 #1
0
class TestHandlerRecognition(object):
    def setUp(self):
        class options:
            dsn = conf.LITE_DSN
            env = ['fixture.examples.db.sqlalchemy_examples']
        self.generator = DataSetGenerator(options, template=StubTemplate())
        
    def tearDown(self):
        from sqlalchemy.orm import clear_mappers
        clear_mappers()
        
    @attr(unit=True)
    def test_recognizes_mapped_class(self):
        from sqlalchemy.orm import mapper
        mapper(MappableObject, categories)
        hnd = self.generator.get_handler(
                "%s.MappableObject" % (MappableObject.__module__),
                obj=MappableObject)
        eq_(type(hnd), SQLAlchemyMappedClassHandler)
        
    @attr(unit=True)
    def test_recognizes_session_mapper(self):
        from sqlalchemy.orm import mapper, sessionmaker, scoped_session
        
        ScopedSession = scoped_session(sessionmaker(autoflush=False, transactional=False))
        ScopedSession.mapper(MappableObject, categories)
        
        hnd = self.generator.get_handler(
                "%s.MappableObject" % (MappableObject.__module__),
                obj=MappableObject)
        eq_(type(hnd), SQLAlchemySessionMapperHandler)
        
    @attr(unit=True)
    @raises(NotImplementedError)
    def test_recognizes_table_object(self):
        hnd = self.generator.get_handler(
                "%s.categories" % (sqlalchemy_examples.__name__),
                obj=categories)
        eq_(type(hnd), SQLAlchemyTableHandler)
コード例 #2
0
class TestQuerySessionMappedClass(HandlerQueryTest):
    
    def setUp(self):
        from fixture import SQLAlchemyFixture, NamedDataStyle
        import sqlalchemy
        from sqlalchemy.orm import (
                mapper, relation, clear_mappers, sessionmaker, scoped_session)
        from sqlalchemy import create_engine
        
        metadata.bind = create_engine(conf.LITE_DSN)
        metadata.create_all()
                
        class options:
            dsn = conf.LITE_DSN
            env = ['fixture.examples.db.sqlalchemy_examples']
        self.options = options
        self.generator = DataSetGenerator(self.options, template=StubTemplate())
        
        ScopedSession = scoped_session(sessionmaker(autoflush=False, transactional=True))
        
        ScopedSession.mapper(Category, categories, save_on_init=False)
        ScopedSession.mapper(Product, products, properties={
            'category': relation(Category),
        }, save_on_init=False)
        ScopedSession.mapper(Offer, offers, properties={
            'category': relation(Category, backref='products'),
            'product': relation(Product)
        }, save_on_init=False)
        
        self.fixture = SQLAlchemyFixture(
                            env=sqlalchemy_examples, 
                            style=NamedDataStyle(),
                            engine=metadata.bind)
        self.data = self.fixture.data(self.CategoryData)
        self.data.setup()
        
        self.hnd = self.generator.get_handler(
                            "%s.Category" % (Category.__module__),
                            obj=Category,
                            connection=metadata.bind)
        self.hnd.begin()
        
    def tearDown(self):
        from sqlalchemy.orm import clear_mappers
        self.data.teardown()
        metadata.drop_all()
        clear_mappers()