示例#1
0
def test_related_types():

    Base = declarative_base()

    class Page(Base, ORMSearchable):
        __tablename__ = 'pages'
        id = Column(Integer, primary_key=True)
        type = Column(Text, nullable=False)

        __mapper_args__ = {
            "polymorphic_on": 'type'
        }

    class Topic(Page):
        __mapper_args__ = {'polymorphic_identity': 'topic'}
        es_type_name = 'topic'

    class News(Page):
        __mapper_args__ = {'polymorphic_identity': 'news'}
        es_type_name = 'news'

    class Temp(Page):
        __mapper_args__ = {'polymorphic_identity': 'temp'}
        es_type_name = None

    assert utils.related_types(Page) == {'pages', 'topic', 'news'}
    assert utils.related_types(Topic) == {'pages', 'topic', 'news'}
    assert utils.related_types(News) == {'pages', 'topic', 'news'}
    assert utils.related_types(Temp) == {'pages', 'topic', 'news'}
示例#2
0
def test_related_types_unsearchable_base():

    Base = declarative_base()

    # compared to test_related_types, this base class is not searchable
    class Page(Base):
        __tablename__ = 'pages'
        id = Column(Integer, primary_key=True)
        type = Column(Text, nullable=False)

        __mapper_args__ = {
            "polymorphic_on": 'type'
        }

    class Topic(Page):
        __mapper_args__ = {'polymorphic_identity': 'topic'}
        es_type_name = 'topic'

    class News(Page):
        __mapper_args__ = {'polymorphic_identity': 'news'}
        es_type_name = 'news'

    assert utils.related_types(Page) == {'news', 'topic'}