Exemple #1
0
def test_simple_transaction():
    @fireo.transactional
    def update_population(trans):
        city = TransCity.collection.get('trans_city/AB', trans)
        city.population = city.population + 1
        city.update(transaction=trans)

    transaction = fireo.transaction()
    update_population(transaction)

    city = TransCity.collection.get('trans_city/AB')

    assert city.population == 101
Exemple #2
0
def test_error_read_after_write_transaction():
    @fireo.transactional
    def update_population(trans):
        TransCity.collection.create(transaction=trans,
                                    state='IJ',
                                    population=200)
        city = TransCity.collection.get('trans_city/AB', trans)
        city.population = city.population + 1
        city.update(transaction=trans)

    transaction = fireo.transaction()

    with pytest.raises(ReadAfterWriteError):
        update_population(transaction)
Exemple #3
0
def test_filter_get_transaction():
    @fireo.transactional
    def update_population(trans):
        city = TransCity.collection.filter('state', '==',
                                           'CD').transaction(trans).get()
        city.population = city.population + 1
        city.update(transaction=trans)

    transaction = fireo.transaction()
    update_population(transaction)

    city = TransCity.collection.get('trans_city/CD')

    assert city.population == 401
Exemple #4
0
def test_filter_fetch_transaction():
    @fireo.transactional
    def update_population(trans):
        cities = TransCity.collection.filter('state', '==',
                                             'EF').transaction(trans).fetch()
        city = next(cities)
        city.population = city.population + 1
        city.update(transaction=trans)

    transaction = fireo.transaction()
    update_population(transaction)

    city = TransCity.collection.get('trans_city/EF')

    assert city.population == 501
Exemple #5
0
def test_issue_92_without_oop():
    class TestIssue92(Model):
        id = IDField()
        name = TextField()
        age = NumberField()

    @fireo.transactional
    def insert_in_transaction(transaction, data):
        TestIssue92.from_dict(data).save(transaction=transaction)

    transaction = fireo.transaction()
    data = {'id': 'test-issue-92-id-2', 'name': 'username', 'age': 27}
    insert_in_transaction(transaction, data)

    doc = TestIssue92.collection.get('test_issue92/test-issue-92-id-2')

    assert doc.name == 'username'
    assert doc.age == 27
Exemple #6
0
def test_issue_92_with_oop():
    class TestIssue92(Model):
        id = IDField()
        name = TextField()
        age = NumberField()

    class TransTest():
        def __init__(self):
            self.model = TestIssue92()

        @fireo.transactional
        def insert_in_transaction(self, transaction, data):
            self.model.from_dict(data).save(transaction=transaction)

    transaction = fireo.transaction()
    data = {'id': 'test-issue-92-id', 'name': 'username', 'age': 27}
    TransTest().insert_in_transaction(transaction, data)

    doc = TestIssue92.collection.get('test_issue92/test-issue-92-id')

    assert doc.name == 'username'
    assert doc.age == 27