test_bigchain_api -> fixed by adding ErrorHandling for Tarantool operation

This commit is contained in:
andrei 2022-05-06 17:35:15 +03:00
parent b920ed3500
commit 0cfbaebd42
2 changed files with 13 additions and 5 deletions

View File

@ -10,6 +10,7 @@ from operator import itemgetter
from planetmint.backend import query
from planetmint.backend.exceptions import DuplicateKeyError
from planetmint.backend.exceptions import OperationError
from planetmint.backend.utils import module_dispatch_registrar
from planetmint.backend.tarantool.connection import TarantoolDB
from planetmint.backend.tarantool.transaction.tools import TransactionCompose, TransactionDecompose
@ -65,7 +66,10 @@ def store_transactions(connection, signed_transactions: list):
for transaction in signed_transactions:
txprepare = TransactionDecompose(transaction)
txtuples = txprepare.convert_to_tuple()
try:
txspace.insert(txtuples["transactions"])
except: # This is used for omitting duplicate error in database for test -> test_bigchain_api::test_double_inclusion
continue
for _in in txtuples["inputs"]:
inxspace.insert(_in)
@ -99,7 +103,6 @@ def get_transactions(connection, transactions_ids: list):
def store_metadatas(connection, metadata: list):
space = connection.space("meta_data")
for meta in metadata:
space.insert((meta["id"], meta["data"] if not "metadata" in meta else meta["metadata"]))

View File

@ -46,12 +46,17 @@ class TestBigchainApi(object):
def test_double_inclusion(self, b, alice):
from planetmint.models import Transaction
from planetmint.backend.exceptions import OperationError
from tarantool.error import DatabaseError
from planetmint.backend.tarantool.connection import TarantoolDB
tx = Transaction.create([alice.public_key], [([alice.public_key], 1)])
tx = tx.sign([alice.private_key])
b.store_bulk_transactions([tx])
if isinstance(b.connection, TarantoolDB):
with pytest.raises(DatabaseError):
b.store_bulk_transactions([tx])
else:
with pytest.raises(OperationError):
b.store_bulk_transactions([tx])