fix bug in how reserved balance is calculated

This commit is contained in:
Lex Berezhny 2021-04-16 10:42:51 -04:00
parent 66c0537251
commit e54c31d2d5
2 changed files with 11 additions and 2 deletions

View file

@ -1146,7 +1146,10 @@ class Database(SQLiteMixin):
constraints['accounts'] = accounts constraints['accounts'] = accounts
result = (await self.select_txos( result = (await self.select_txos(
f"COALESCE(SUM(amount), 0) AS total," f"COALESCE(SUM(amount), 0) AS total,"
f"COALESCE(SUM(CASE WHEN txo_type != {TXO_TYPES['other']} THEN amount ELSE 0 END), 0) AS reserved," f"COALESCE(SUM("
f" CASE WHEN"
f" txo_type NOT IN ({TXO_TYPES['other']}, {TXO_TYPES['purchase']})"
f" THEN amount ELSE 0 END), 0) AS reserved,"
f"COALESCE(SUM(" f"COALESCE(SUM("
f" CASE WHEN" f" CASE WHEN"
f" txo_type IN ({','.join(map(str, CLAIM_TYPES))})" f" txo_type IN ({','.join(map(str, CLAIM_TYPES))})"

View file

@ -184,7 +184,13 @@ class PurchaseCommandTests(CommandTestCase):
await self.generate(1) await self.generate(1)
await self.ledger.wait(purchase) await self.ledger.wait(purchase)
await self.assertBalance(self.account, '10.987893') # confirm that available and reserved take into account purchase received
self.assertEqual(await self.account.get_detailed_balance(), {
'total': 1099789300,
'available': 1098789300,
'reserved': 1000000,
'reserved_subtotals': {'claims': 1000000, 'supports': 0, 'tips': 0}
})
self.assertItemCount(await self.daemon.jsonrpc_utxo_list(), 2) self.assertItemCount(await self.daemon.jsonrpc_utxo_list(), 2)
spend = await self.daemon.jsonrpc_wallet_send('10.5', address2) spend = await self.daemon.jsonrpc_wallet_send('10.5', address2)