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
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)
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
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
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
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