fix(infra): update transaction amount handling to use CanonicalAmount and ensure negative values in transaction tests

This commit is contained in:
Stevan Freeborn
2026-03-11 20:01:23 -05:00
parent e3acb2166d
commit 559908a150
5 changed files with 7 additions and 2 deletions
@@ -89,7 +89,7 @@ internal sealed class PlaidAddedTransactionHandler : IPlaidAddedTransactionHandl
account.Id,
addedTransaction.Merchant,
addedTransaction.Description,
addedTransaction.Amount,
addedTransaction.CanonicalAmount,
addedTransaction.PostedDate,
transactionMetadata
);
@@ -7,6 +7,7 @@ public static class PlaidExtensions
{
public string Merchant => transaction.MerchantName ?? "Unknown merchant";
public string Description => transaction.OriginalDescription ?? "";
public decimal? CanonicalAmount => transaction.Amount is decimal amount ? -amount : null;
public DateTimeOffset PostedDate => transaction.Datetime ?? (
transaction.Date.HasValue
? new DateTimeOffset(
@@ -84,7 +84,7 @@ internal sealed class PlaidModifiedTransactionHandler : IPlaidModifiedTransactio
existing.AccountId,
plaidModifiedTransaction.Merchant,
plaidModifiedTransaction.Description,
plaidModifiedTransaction.Amount,
plaidModifiedTransaction.CanonicalAmount,
plaidModifiedTransaction.PostedDate,
plaidMetadata
);
@@ -30,6 +30,9 @@ public class PlaidAddedTransactionHandlerTests : IntegrationTest
result.Should().Be(1);
account.Transactions.Should().HaveCount(2);
account.Transactions
.Single(t => t.Metadata is PlaidTransactionMetadata m && m.PlaidId == transaction.TransactionId)
.Amount.Should().Be(-transaction.Amount);
}
[Fact]
@@ -31,5 +31,6 @@ public class PlaidModifiedTransactionHandlerTests : IntegrationTest
result.Should().Be(1);
existingTransaction.MerchantName.Should().Be(transaction.MerchantName);
existingTransaction.Amount.Should().Be(-transaction.Amount);
}
}