def test_transaction_status_propagation(self, db_session): task = BlockchainTask(uuid=str_uuid()) assert task.status == 'UNSTARTED' transaction_1 = BlockchainTransaction() transaction_1.task = task transaction_1.status = 'PENDING' assert task.status == 'PENDING' transaction_2 = BlockchainTransaction() transaction_2.task = task transaction_2.status = 'SUCCESS' assert task.status == 'SUCCESS' assert task.status_code == 1 db_session.add_all([task, transaction_1, transaction_2]) db_session.commit() # Uses a custom expression so worth testing the filter queried_task = db_session.query(BlockchainTask).filter( BlockchainTask.status == 'SUCCESS').first() assert queried_task == task
def test_set_transaction_status(self, db_session): transaction = BlockchainTransaction() assert transaction.status == 'UNKNOWN' assert transaction.status_code == 99 transaction.status = 'PENDING' assert transaction.status == 'PENDING' assert transaction.status_code == 2 with pytest.raises(ValueError): transaction.status = 'NOT_A_STATUS' db_session.add(transaction) db_session.commit() # Uses a custom expression so worth testing the filter queried_transaction = db_session.query(BlockchainTransaction).filter( BlockchainTransaction.status_code == 2).first() assert queried_transaction == transaction
def _claim_transaction_nonce( self, network_nonce: int, signing_wallet: BlockchainWallet, transaction: BlockchainTransaction, ) -> int: if transaction.nonce is not None: return transaction.nonce calculated_nonce = self._calculate_nonce(signing_wallet, network_nonce) transaction.signing_wallet = signing_wallet transaction.nonce = calculated_nonce transaction.status = 'PENDING' # TODO: can we shift this commit out? self.session.commit() return calculated_nonce