Beispiel #1
0
    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()
Beispiel #2
0
    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()
Beispiel #3
0
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']
Beispiel #4
0
 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'])
Beispiel #5
0
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']
Beispiel #6
0
 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'])
Beispiel #7
0
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'>"
Beispiel #8
0
    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__()
Beispiel #9
0
    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__()
Beispiel #10
0
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'>"
Beispiel #11
0
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()
Beispiel #12
0
    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()
Beispiel #13
0
    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__()
Beispiel #14
0
    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__()