def test_CustomModelMixin_polymorphic(self): from clld.tests.fixtures import CustomLanguage lang = Language(id='def', name='Name') clang = CustomLanguage(id='abc', name='Name', custom='c') DBSession.add_all([lang, clang]) DBSession.flush() DBSession.expunge_all() lang = DBSession.query(Language).filter_by(id='def').one() clang = DBSession.query(Language).filter_by(id='abc').one() self.assertEqual(lang.polymorphic_type, 'base') self.assertEqual(clang.polymorphic_type, 'custom') self.assertIs(type(lang), Language) self.assertIs(type(clang), CustomLanguage)
def test_CustomModelMixin_polymorphic(db, custom_language): lang = Language(id='def', name='Name') assert repr(lang).startswith("<Language ") assert is_base(Language) assert not is_base(custom_language) clang = custom_language(id='abc', name='Name', custom='c') DBSession.add_all([lang, clang]) DBSession.flush() DBSession.expunge_all() lang = DBSession.query(Language).filter_by(id='def').one() clang = DBSession.query(Language).filter_by(id='abc').one() assert lang.polymorphic_type == 'base' assert clang.polymorphic_type == 'custom' assert type(lang) is Language assert type(clang) is custom_language