forked from LBRYCommunity/lbry-sdk
Merge pull request #2919 from lbryio/exclude_internal_transfers_fix
fix issue with `--exclude_internal_transfers` where it was filtering out sent payments
This commit is contained in:
commit
e48bef809f
2 changed files with 25 additions and 11 deletions
|
@ -733,8 +733,9 @@ class Database(SQLiteMixin):
|
||||||
include_is_my_input = True
|
include_is_my_input = True
|
||||||
constraints['exclude_internal_payments__or'] = {
|
constraints['exclude_internal_payments__or'] = {
|
||||||
'txo.txo_type__not': TXO_TYPES['other'],
|
'txo.txo_type__not': TXO_TYPES['other'],
|
||||||
|
'txo.address__not_in': my_addresses,
|
||||||
'txi.address__is_null': True,
|
'txi.address__is_null': True,
|
||||||
'txi.address__not_in': my_addresses
|
'txi.address__not_in': my_addresses,
|
||||||
}
|
}
|
||||||
sql = [f"SELECT {cols} FROM txo JOIN tx ON (tx.txid=txo.txid)"]
|
sql = [f"SELECT {cols} FROM txo JOIN tx ON (tx.txid=txo.txid)"]
|
||||||
if is_spent:
|
if is_spent:
|
||||||
|
|
|
@ -503,22 +503,35 @@ class TransactionOutputCommands(ClaimTestCase):
|
||||||
address2 = await self.daemon.jsonrpc_address_unused(wallet_id=wallet2.id)
|
address2 = await self.daemon.jsonrpc_address_unused(wallet_id=wallet2.id)
|
||||||
await self.channel_create('@kept-channel')
|
await self.channel_create('@kept-channel')
|
||||||
await self.channel_create('@sent-channel', claim_address=address2)
|
await self.channel_create('@sent-channel', claim_address=address2)
|
||||||
|
await self.wallet_send('2.9', address2)
|
||||||
|
|
||||||
# all txos on second wallet
|
# all txos on second wallet
|
||||||
received_channel, = await self.txo_list(wallet_id=wallet2.id, is_my_input_or_output=True)
|
received_payment, received_channel = await self.txo_list(
|
||||||
|
wallet_id=wallet2.id, is_my_input_or_output=True)
|
||||||
self.assertEqual('1.0', received_channel['amount'])
|
self.assertEqual('1.0', received_channel['amount'])
|
||||||
self.assertFalse(received_channel['is_my_input'])
|
self.assertFalse(received_channel['is_my_input'])
|
||||||
self.assertTrue(received_channel['is_my_output'])
|
self.assertTrue(received_channel['is_my_output'])
|
||||||
self.assertFalse(received_channel['is_internal_transfer'])
|
self.assertFalse(received_channel['is_internal_transfer'])
|
||||||
|
self.assertEqual('2.9', received_payment['amount'])
|
||||||
|
self.assertFalse(received_payment['is_my_input'])
|
||||||
|
self.assertTrue(received_payment['is_my_output'])
|
||||||
|
self.assertFalse(received_payment['is_internal_transfer'])
|
||||||
|
|
||||||
# all txos on default wallet
|
# all txos on default wallet
|
||||||
r = await self.txo_list(is_my_input_or_output=True)
|
r = await self.txo_list(is_my_input_or_output=True)
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
['1.0', '7.947786', '1.0', '8.973893', '10.0'],
|
['2.9', '5.047662', '1.0', '7.947786', '1.0', '8.973893', '10.0'],
|
||||||
[t['amount'] for t in r]
|
[t['amount'] for t in r]
|
||||||
)
|
)
|
||||||
|
|
||||||
sent_channel, change2, kept_channel, change1, initial_funds = r
|
sent_payment, change3, sent_channel, change2, kept_channel, change1, initial_funds = r
|
||||||
|
|
||||||
|
self.assertTrue(sent_payment['is_my_input'])
|
||||||
|
self.assertFalse(sent_payment['is_my_output'])
|
||||||
|
self.assertFalse(sent_payment['is_internal_transfer'])
|
||||||
|
self.assertTrue(change3['is_my_input'])
|
||||||
|
self.assertTrue(change3['is_my_output'])
|
||||||
|
self.assertTrue(change3['is_internal_transfer'])
|
||||||
|
|
||||||
self.assertTrue(sent_channel['is_my_input'])
|
self.assertTrue(sent_channel['is_my_input'])
|
||||||
self.assertFalse(sent_channel['is_my_output'])
|
self.assertFalse(sent_channel['is_my_output'])
|
||||||
|
@ -540,31 +553,31 @@ class TransactionOutputCommands(ClaimTestCase):
|
||||||
|
|
||||||
# my stuff and stuff i sent excluding "change"
|
# my stuff and stuff i sent excluding "change"
|
||||||
r = await self.txo_list(is_my_input_or_output=True, exclude_internal_transfers=True)
|
r = await self.txo_list(is_my_input_or_output=True, exclude_internal_transfers=True)
|
||||||
self.assertEqual([sent_channel, kept_channel, initial_funds], r)
|
self.assertEqual([sent_payment, sent_channel, kept_channel, initial_funds], r)
|
||||||
|
|
||||||
# my unspent stuff and stuff i sent excluding "change"
|
# my unspent stuff and stuff i sent excluding "change"
|
||||||
r = await self.txo_list(is_my_input_or_output=True, is_not_spent=True, exclude_internal_transfers=True)
|
r = await self.txo_list(is_my_input_or_output=True, is_not_spent=True, exclude_internal_transfers=True)
|
||||||
self.assertEqual([sent_channel, kept_channel], r)
|
self.assertEqual([sent_payment, sent_channel, kept_channel], r)
|
||||||
|
|
||||||
# only "change"
|
# only "change"
|
||||||
r = await self.txo_list(is_my_input=True, is_my_output=True, type="other")
|
r = await self.txo_list(is_my_input=True, is_my_output=True, type="other")
|
||||||
self.assertEqual([change2, change1], r)
|
self.assertEqual([change3, change2, change1], r)
|
||||||
|
|
||||||
# only unspent "change"
|
# only unspent "change"
|
||||||
r = await self.txo_list(is_my_input=True, is_my_output=True, type="other", is_not_spent=True)
|
r = await self.txo_list(is_my_input=True, is_my_output=True, type="other", is_not_spent=True)
|
||||||
self.assertEqual([change2], r)
|
self.assertEqual([change3], r)
|
||||||
|
|
||||||
# only spent "change"
|
# only spent "change"
|
||||||
r = await self.txo_list(is_my_input=True, is_my_output=True, type="other", is_spent=True)
|
r = await self.txo_list(is_my_input=True, is_my_output=True, type="other", is_spent=True)
|
||||||
self.assertEqual([change1], r)
|
self.assertEqual([change2, change1], r)
|
||||||
|
|
||||||
# all my unspent stuff
|
# all my unspent stuff
|
||||||
r = await self.txo_list(is_my_output=True, is_not_spent=True)
|
r = await self.txo_list(is_my_output=True, is_not_spent=True)
|
||||||
self.assertEqual([change2, kept_channel], r)
|
self.assertEqual([change3, kept_channel], r)
|
||||||
|
|
||||||
# stuff i sent
|
# stuff i sent
|
||||||
r = await self.txo_list(is_not_my_output=True)
|
r = await self.txo_list(is_not_my_output=True)
|
||||||
self.assertEqual([sent_channel], r)
|
self.assertEqual([sent_payment, sent_channel], r)
|
||||||
|
|
||||||
async def test_txo_plot(self):
|
async def test_txo_plot(self):
|
||||||
day_blocks = int((24 * 60 * 60) / self.ledger.headers.timestamp_average_offset)
|
day_blocks = int((24 * 60 * 60) / self.ledger.headers.timestamp_average_offset)
|
||||||
|
|
Loading…
Reference in a new issue