def test_GeoJson(mocker): adapter = geojson.GeoJson(None) assert len(list(adapter.feature_iterator(None, None))) == 0 assert len(list(adapter.feature_iterator(Language(), None))) == 1 assert len( list( adapter.feature_iterator(mocker.Mock(languages=[Language()]), None))) == 1
def test_GeoJson(self): adapter = geojson.GeoJson(None) self.assertEquals(len(list(adapter.feature_iterator(None, None))), 0) self.assertEquals( len(list(adapter.feature_iterator(Language(), None))), 1) self.assertEquals( len( list( adapter.feature_iterator(Mock(languages=[Language()]), None))), 1)
def test_Base(db): l = Language(id='abc', name='Name') DBSession.add(l) DBSession.flush() DBSession.expunge(l) l = Language.get('abc', session=DBSession) assert l.name == 'Name' Language().__str__() assert repr(l) == "<Language 'abc'>"
def test_Base(db): l = Language(id='abc', name='Name') VersionedDBSession.add(l) VersionedDBSession.flush() VersionedDBSession.expunge(l) l = Language.get('abc', session=VersionedDBSession) assert l.name == 'Name' assert not list(l.history()) Language().__str__() assert repr(l) == "<Language 'abc'>"
def test_Base(self): l = Language(id='abc', name='Name') VersionedDBSession.add(l) VersionedDBSession.flush() VersionedDBSession.expunge(l) l = Language.get('abc') self.assertEqual(l.name, 'Name') assert not list(l.history()) # a bit of a hack to test the human readable representations. # we exploit the fact, that on py2, string and unicode comparison does type # coercion, while on py3, the two methods should actually return the same string. self.assertEqual(l.__str__(), l.__unicode__()) Language().__str__()
def test_Base(db): l = Language(id='abc', name='Name') VersionedDBSession.add(l) VersionedDBSession.flush() VersionedDBSession.expunge(l) l = Language.get('abc', session=VersionedDBSession) assert l.name == 'Name' assert not list(l.history()) # a bit of a hack to test the human readable representations. # we exploit the fact, that on py2, string and unicode comparison does type # coercion, while on py3, the two methods should actually return the same string. assert l.__str__() == l.__unicode__() Language().__str__() assert repr(l) == "<Language 'abc'>" if PY3 else "<Language u'abc'>"
def test_Versioning(self): from clld.db.models.common import Language, Identifier, LanguageIdentifier from clld.db.meta import VersionedDBSession l = Language(id='abc', name='Old Name', jsondata={'i': 2}) VersionedDBSession.add(l) VersionedDBSession.flush() self.assertEqual(l.version, 1) l.name = 'New Name' l.description = 'New Description' VersionedDBSession.flush() self.assertEqual(l.version, 2) History = l.__history_mapper__.class_ res = VersionedDBSession.query(History).filter( History.pk == l.pk).all() self.assertEqual(res[0].name, 'Old Name') li = LanguageIdentifier(identifier=Identifier(id='asd', type='wals'), language=l) VersionedDBSession.flush() VersionedDBSession.delete(li) VersionedDBSession.delete(l) VersionedDBSession.flush()
def test_Language(self): from clld.db.models.common import Language d = Language(id='abc') assert d.glottocode is None assert d.iso_code is None assert d.__solr__(None)
def test_add_language_codes(env): from clld.db.models.common import Language from clld.scripts.util import Data, add_language_codes add_language_codes(Data(), Language(), 'iso', glottocodes=dict(iso='glot1234'))
def test_JSONEncodedDict(db): l = Language(id='abc', name='Name', jsondata={'i': 2}) DBSession.add(l) DBSession.flush() DBSession.expunge(l) for lang in DBSession.query(Language).filter(Language.id == 'abc'): assert lang.jsondata['i'] == 2 break
def test_Base_jsondata(db): l = Language(id='abc', name='Name') VersionedDBSession.add(l) VersionedDBSession.flush() l.update_jsondata(a=1) assert 'a' in l.jsondata l.update_jsondata(b=1) assert 'b' in l.jsondata and 'a' in l.jsondata assert 'b' in l.__json__(None)['jsondata']
def test_Data(self): from clld.db.models.common import Language, Language_data l = Language(id='abc', name='Name') l.data.append(Language_data(key='abstract', value='c')) DBSession.add(l) DBSession.flush() DBSession.refresh(l) self.assertEqual(l.datadict()['abstract'], 'c')
def test_Base_jsondata(self): l = Language(id='abc', name='Name') VersionedDBSession.add(l) VersionedDBSession.flush() l.update_jsondata(a=1) self.assertTrue('a' in l.jsondata) l.update_jsondata(b=1) self.assertTrue('b' in l.jsondata and 'a' in l.jsondata) self.assertTrue('b' in l.__json__(None)['jsondata'])
def test_compute_language_sources(self): from clld.db.models.common import Source, Sentence, Language, SentenceReference from clld.db.meta import DBSession from clld.db.util import compute_language_sources s = Sentence(id='sentenced', language=Language(id='newlang')) sr = SentenceReference(sentence=s, source=Source.first()) DBSession.add(sr) DBSession.flush() compute_language_sources()
def test_Files(self): from clld.db.models.common import Language, Language_files if PY3: return # pragma: no cover l = Language(id='abc', name='Name') assert l.iso_code is None l._files.append(Language_files(id='abstract')) DBSession.add(l) DBSession.flush() DBSession.refresh(l) f = l.files['abstract']
def test_Base(self): l = Language(id='abc', name='Name') VersionedDBSession.add(l) VersionedDBSession.flush() VersionedDBSession.expunge(l) #print('pk: %s' % l.pk) #transaction.commit() #transaction.begin() #l = VersionedDBSession.query(Language).get(1) #print(l) #l.name = 'New name' #print('pk: %s' % l.pk) #transaction.commit() #transaction.begin() l = Language.get('abc') #print(l.version) self.assertEqual(l.name, 'Name') l.history() # a bit of a hack to test the human readable representations. # we exploit the fact, that on py2, string and unicode comparison does type # coercion, while on py3, the two methods should actualy return the same string. self.assertEqual(l.__str__(), l.__unicode__()) Language().__str__()
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_CsvMixin(db): l1 = Language(id='abc', name='Name', latitude=12.4, jsondata=dict(a=None)) DBSession.add(l1) DBSession.flush() l1 = Language.csv_query(DBSession).first() cols = l1.csv_head() row = l1.to_csv() for k, v in zip(cols, row): if k == 'jsondata': assert 'a' in json.loads(v) l2 = Language.from_csv(row) assert pytest.approx(l1.latitude) == l2.latitude row[cols.index('latitude')] = '3,5' l2 = Language.from_csv(row) assert l2.latitude < l1.latitude
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
def test_CsvMixin(self): l1 = Language(id='abc', name='Name', latitude=12.4, jsondata=dict(a=None)) DBSession.add(l1) DBSession.flush() l1 = Language.csv_query(DBSession).first() cols = l1.csv_head() row = l1.to_csv() for k, v in zip(cols, row): if k == 'jsondata': self.assertIn('a', json.loads(v)) l2 = Language.from_csv(row) assert_almost_equal(l1.latitude, l2.latitude) row[cols.index('latitude')] = '3,5' l2 = Language.from_csv(row) self.assertLess(l2.latitude, l1.latitude)
def test_Versioning(db): from clld.db.models.common import Language, Language_data from clld.db.meta import VersionedDBSession l = Language(id='abc', name='Old Name', jsondata={'i': 2}) VersionedDBSession.add(l) VersionedDBSession.flush() assert l.version == 1 l.name = 'New Name' l.description = 'New Description' VersionedDBSession.flush() assert l.version == 2 History = l.__history_mapper__.class_ res = VersionedDBSession.query(History).filter(History.pk == l.pk).all() assert res[0].name == 'Old Name' l.data.append(Language_data(key='k', value='v')) VersionedDBSession.flush() assert l.datadict() VersionedDBSession.delete(l) VersionedDBSession.flush()
def test_UnitValue(db): from clld.db.models.common import Unit, Language, UnitParameter, UnitValue, UnitDomainElement u = Unit(name='unit', language=Language(name='language')) p1 = UnitParameter() p2 = UnitParameter() # NOTE: we assume paramter of UnitValue and UnitDomainElement are identical # (i.e. we do not enforce/check this) v = UnitValue(unit=u, unitparameter=p1, unitdomainelement=UnitDomainElement(parameter=p1, name='ude')) assert str(v) == 'ude' DBSession.add(v) DBSession.add(p2) DBSession.flush() try: v.unitparameter_pk = p2.pk raise ValueError # pragma: no cover except AssertionError: pass v.unitparameter_pk = p1.pk DBSession.flush()
def test_Unit(self): from clld.db.models.common import Unit, Language u = Unit(name='unit', language=Language(name='language')) assert u.__solr__(None)
def test_Unit(): from clld.db.models.common import Unit, Language u = Unit(name='unit', language=Language(name='language'))