fix None in history, check records after wait

This commit is contained in:
Victor Shyba 2020-01-13 20:11:14 -03:00 committed by Lex Berezhny
parent a56dd66c98
commit d34f5c2712
2 changed files with 8 additions and 2 deletions

View file

@ -271,7 +271,7 @@ class Ledger(metaclass=LedgerRegistry):
async def get_local_status_and_history(self, address, history=None): async def get_local_status_and_history(self, address, history=None):
if not history: if not history:
address_details = await self.db.get_address(address=address) address_details = await self.db.get_address(address=address)
history = address_details['history'] or '' history = (address_details['history'] if address_details else '') or ''
parts = history.split(':')[:-1] parts = history.split(':')[:-1]
return ( return (
hexlify(sha256(history.encode())).decode() if history else None, hexlify(sha256(history.encode())).decode() if history else None,
@ -616,9 +616,12 @@ class Ledger(metaclass=LedgerRegistry):
)) for address_record in records )) for address_record in records
], timeout=timeout) ], timeout=timeout)
if pending: if pending:
records = await self.db.get_addresses(address__in=addresses)
for record in records: for record in records:
found = False found = False
_, local_history = await self.get_local_status_and_history(None, history=record['history']) local_history = (await self.get_local_status_and_history(
record['address'], history=record['history']
))[1] if record['history'] else []
for txid, local_height in local_history: for txid, local_height in local_history:
if txid == tx.id and local_height >= height: if txid == tx.id and local_height >= height:
found = True found = True

View file

@ -375,6 +375,9 @@ class TestQueries(AsyncioTestCase):
self.assertListEqual([0, 3, 2, 1], [tx.height for tx in txs]) self.assertListEqual([0, 3, 2, 1], [tx.height for tx in txs])
self.assertListEqual([tx4.id, tx3.id, tx2.id, tx1.id], [tx.id for tx in txs]) self.assertListEqual([tx4.id, tx3.id, tx2.id, tx1.id], [tx.id for tx in txs])
async def test_empty_history(self):
self.assertEqual((None, []), await self.ledger.get_local_status_and_history(''))
class TestUpgrade(AsyncioTestCase): class TestUpgrade(AsyncioTestCase):