def test_mine_block_whenOneDuplicateTransaction_thenReturnsNone(self):
transaction = Mock(Transaction)
transaction.source = "from"
transaction.timestamp = 1498923800
transaction.destination = "to"
transaction.amount = 25
transaction.fee = 0.1
transaction.signature = "signature"
transaction.tx_hash = "transaction_hash"
block_id_with_same_transaction = 38
latest_block = Mock(Block)
latest_block.index = 35
latest_block.current_hash = "latest_block_hash"
with patch.object(Blockchain, '__init__', return_value=None) as patched_init, \
patch.object(Blockchain, 'get_latest_block', return_value=latest_block) as patched_get_latest_block, \
patch.object(Blockchain, 'pop_next_unconfirmed_transaction', side_effect=[transaction, None]) as patched_pop_next_unconfirmed_transaction, \
patch.object(Blockchain, 'find_duplicate_transactions', return_value=block_id_with_same_transaction) as patched_find_duplicate_transactions:
subject = Blockchain()
resp = subject.mine_block("reward_address")
self.assertIsNone(resp)
self.assertEqual(patched_pop_next_unconfirmed_transaction.call_count, 2)
patched_find_duplicate_transactions.asssert_called_once_with("transaction_hash")
评论列表
文章目录