Exemplo n.º 1
0
    def test_rejected_atomic(self):
        main_account = Account.get_main_account()
        with patch('algorand.utils.transaction_info') as mock_transaction_info:
            mock_transaction_info.return_value = {
                'pool-error': '',
                'txn': {
                    'txn': {
                        'lv': utils.status()['last-round'] - 1000
                    }
                }
            }
            tx0 = Transaction.prepare_transfer(main_account, self.user_account,
                                               0.21, Transaction.ALGO,
                                               Transaction.OPT_IN)
            tx1 = Transaction.prepare_transfer(self.user_account,
                                               self.user_account, 0,
                                               Transaction.USDC,
                                               Transaction.OPT_IN)
            tx2 = Transaction.prepare_transfer(main_account, self.user_account,
                                               0.1, Transaction.USDC,
                                               Transaction.OPT_IN)
            txids = Transaction.atomic_transfer([tx0, tx1, tx2])
            for txid in txids:
                self.assertTrue(utils.wait_for_confirmation(txid))

            verify_transactions()

            self.assertEqual(
                Transaction.objects.filter(
                    status=Transaction.REJECTED).count(), 3)
            self.assertEqual(Transaction.objects.count(), 6)

            one_without_prev = False
            for txn in Transaction.objects.filter(retries=1):
                if not one_without_prev and txn.atomic_prev is None:
                    one_without_prev = True
                    continue

                self.assertFalse(txn.atomic_prev is None)