From 0a25679f5ce7350c7eebab6e383aa529690c07dd Mon Sep 17 00:00:00 2001 From: ZGrguric Date: Tue, 28 Feb 2023 09:01:14 +0100 Subject: [PATCH] Zero primary change if only fee pay --- src/TxMutationParser.php | 10 +++++----- tests/{ATx17Test.php => Tx17Test.php} | 13 +++++++++++-- tests/Tx5Test.php | 26 +++++--------------------- 3 files changed, 21 insertions(+), 28 deletions(-) rename tests/{ATx17Test.php => Tx17Test.php} (77%) diff --git a/src/TxMutationParser.php b/src/TxMutationParser.php index 5528810..d7d87f0 100644 --- a/src/TxMutationParser.php +++ b/src/TxMutationParser.php @@ -49,7 +49,6 @@ public function __construct(string $reference_account, \stdClass $tx) } } unset($v); - //dd($balanceChangeExclFeeOnly,$ownBalanceChanges); /** * Get signer from tx public key @@ -357,6 +356,9 @@ private function significantBalanceChange(array $balanceChanges, ?string $fee): /** * Fallback to default * Possibly XRP sent, if so: exclude fee + * If fee equals to amount then fallback is zero, + * fee is only primary change and we do not record that, + * this will keep fee display consistant. */ $fallback = $balanceChanges[0]; @@ -366,12 +368,10 @@ private function significantBalanceChange(array $balanceChanges, ?string $fee): \substr($fallback['value'],0,1) === '-' && $fee ) { - $fallback['value'] = BigDecimal::of($fallback['value'])->abs()->isEqualTo( BigDecimal::of($fee)->abs() ) - ? '0' //$fallback['value'] //fee equals to !value + ? null //$fallback['value'] //fee equals to !value = zero change : (string)BigDecimal::of($fallback['value'])->plus($fee)->stripTrailingZeros(); - //dd($fallback,BigDecimal::of($fallback['value'])->abs()->isEqualTo( BigDecimal::of($fee)->abs() )); - if($fallback['value'] === '0') + if($fallback['value'] === null) return []; return $fallback; } diff --git a/tests/ATx17Test.php b/tests/Tx17Test.php similarity index 77% rename from tests/ATx17Test.php rename to tests/Tx17Test.php index 4bd8e3d..38ac699 100644 --- a/tests/ATx17Test.php +++ b/tests/Tx17Test.php @@ -9,7 +9,7 @@ * @see https://github.com/XRPL-Labs/TxMutationParser/blob/main/test/tx1.ts * @see https://hash.xrp.fans/D36265AD359D82BDF056CAFE760F9DFF42BB21C308EC3F68C4DE0D707D2FB6B6/json */ -final class ATx17Test extends TestCase +final class Tx17Test extends TestCase { public function testDepositPreauthFeePayer() { @@ -39,7 +39,16 @@ public function testDepositPreauthFeePayer() //does not contain `secondary` entry $this->assertArrayNotHasKey('secondary',$parsedTransaction['eventList']); - + + # Event flow + //does not contain `start` entry + $this->assertArrayNotHasKey('start',$parsedTransaction['eventFlow']); + + //does not contain `intermediate` entry + $this->assertArrayNotHasKey('intermediate',$parsedTransaction['eventFlow']); + + //does not contain `end` entry + $this->assertArrayNotHasKey('end',$parsedTransaction['eventFlow']); } } \ No newline at end of file diff --git a/tests/Tx5Test.php b/tests/Tx5Test.php index 34507cc..1f992a5 100644 --- a/tests/Tx5Test.php +++ b/tests/Tx5Test.php @@ -18,7 +18,7 @@ public function testTrustLineAddedByOwnAccount() $account = "rwietsevLFg8XSmG3bEZzFein1g8RBqWDZ"; $TxMutationParser = new TxMutationParser($account, $transaction->result); $parsedTransaction = $TxMutationParser->result(); - + //dd( $parsedTransaction); //Self (own account) must be $account $this->assertEquals($account,$parsedTransaction['self']['account']); @@ -35,34 +35,18 @@ public function testTrustLineAddedByOwnAccount() # Event list - //contains (correct) `primary` entry - $this->assertArrayHasKey('primary',$parsedTransaction['eventList']); - $this->assertEquals([ - 'currency' => 'XRP', - 'value' => '-0.000012' - ],$parsedTransaction['eventList']['primary']); - + //does not contain `primary` entry + $this->assertArrayNotHasKey('primary',$parsedTransaction['eventList']); //does not contain `secondary` entry $this->assertArrayNotHasKey('secondary',$parsedTransaction['eventList']); - # Event flow - //does not contain `start` entry $this->assertArrayNotHasKey('start',$parsedTransaction['eventFlow']); - //contains (correct) `intermediate` entry - $this->assertArrayHasKey('intermediate',$parsedTransaction['eventFlow']); - $this->assertEquals([ - 'account' => $account, - 'mutations' => [ - 'out' => [ - 'currency' => "XRP", - 'value' => "-0.000012", - ] - ] - ],$parsedTransaction['eventFlow']['intermediate']); + //does not contain `intermediate` entry + $this->assertArrayNotHasKey('intermediate',$parsedTransaction['eventFlow']); //does not contain `end` entry $this->assertArrayNotHasKey('end',$parsedTransaction['eventFlow']);