fix(infra): update transaction amount handling to use CanonicalAmount and ensure negative values in transaction tests
This commit is contained in:
@@ -89,7 +89,7 @@ internal sealed class PlaidAddedTransactionHandler : IPlaidAddedTransactionHandl
|
|||||||
account.Id,
|
account.Id,
|
||||||
addedTransaction.Merchant,
|
addedTransaction.Merchant,
|
||||||
addedTransaction.Description,
|
addedTransaction.Description,
|
||||||
addedTransaction.Amount,
|
addedTransaction.CanonicalAmount,
|
||||||
addedTransaction.PostedDate,
|
addedTransaction.PostedDate,
|
||||||
transactionMetadata
|
transactionMetadata
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ public static class PlaidExtensions
|
|||||||
{
|
{
|
||||||
public string Merchant => transaction.MerchantName ?? "Unknown merchant";
|
public string Merchant => transaction.MerchantName ?? "Unknown merchant";
|
||||||
public string Description => transaction.OriginalDescription ?? "";
|
public string Description => transaction.OriginalDescription ?? "";
|
||||||
|
public decimal? CanonicalAmount => transaction.Amount is decimal amount ? -amount : null;
|
||||||
public DateTimeOffset PostedDate => transaction.Datetime ?? (
|
public DateTimeOffset PostedDate => transaction.Datetime ?? (
|
||||||
transaction.Date.HasValue
|
transaction.Date.HasValue
|
||||||
? new DateTimeOffset(
|
? new DateTimeOffset(
|
||||||
|
|||||||
@@ -84,7 +84,7 @@ internal sealed class PlaidModifiedTransactionHandler : IPlaidModifiedTransactio
|
|||||||
existing.AccountId,
|
existing.AccountId,
|
||||||
plaidModifiedTransaction.Merchant,
|
plaidModifiedTransaction.Merchant,
|
||||||
plaidModifiedTransaction.Description,
|
plaidModifiedTransaction.Description,
|
||||||
plaidModifiedTransaction.Amount,
|
plaidModifiedTransaction.CanonicalAmount,
|
||||||
plaidModifiedTransaction.PostedDate,
|
plaidModifiedTransaction.PostedDate,
|
||||||
plaidMetadata
|
plaidMetadata
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -30,6 +30,9 @@ public class PlaidAddedTransactionHandlerTests : IntegrationTest
|
|||||||
|
|
||||||
result.Should().Be(1);
|
result.Should().Be(1);
|
||||||
account.Transactions.Should().HaveCount(2);
|
account.Transactions.Should().HaveCount(2);
|
||||||
|
account.Transactions
|
||||||
|
.Single(t => t.Metadata is PlaidTransactionMetadata m && m.PlaidId == transaction.TransactionId)
|
||||||
|
.Amount.Should().Be(-transaction.Amount);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
|
|||||||
@@ -31,5 +31,6 @@ public class PlaidModifiedTransactionHandlerTests : IntegrationTest
|
|||||||
|
|
||||||
result.Should().Be(1);
|
result.Should().Be(1);
|
||||||
existingTransaction.MerchantName.Should().Be(transaction.MerchantName);
|
existingTransaction.MerchantName.Should().Be(transaction.MerchantName);
|
||||||
|
existingTransaction.Amount.Should().Be(-transaction.Amount);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user