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_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_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_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_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(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_Versioning(self): 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() 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') l.data.append(Language_data(key='k', value='v')) VersionedDBSession.flush() assert l.datadict() VersionedDBSession.delete(l) VersionedDBSession.flush()
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__()