feat: implement transaction handling and add integration tests for Plaid transaction handlers

This commit is contained in:
Stevan Freeborn
2026-03-09 04:29:01 -05:00
parent 62a7dde443
commit 0bc810cab6
11 changed files with 298 additions and 37 deletions
@@ -0,0 +1,35 @@
namespace FiscalOS.Infra.Tests.Integration;
public class PlaidModifiedTransactionHandlerTests : IntegrationTest
{
private readonly Mock<ILogger<PlaidModifiedTransactionHandler>> _mockLogger = new();
private readonly PlaidModifiedTransactionHandler _sut;
public PlaidModifiedTransactionHandlerTests()
{
_sut = PlaidModifiedTransactionHandler.From(_mockLogger.Object, AppDbContext);
}
[Fact]
public async Task HandleAsync_WhenCalledWithExistingTransaction_ItShouldUpdateTheTransaction()
{
var user = await CreateTestUserAsync();
var account = user.Accounts.First();
var existingTransaction = account.Transactions.First();
var transaction = new Going.Plaid.Entity.Transaction()
{
TransactionId = ((PlaidTransactionMetadata)existingTransaction.Metadata!).PlaidId,
MerchantName = Guid.NewGuid().ToString(),
OriginalDescription = "Test transaction",
Amount = 100,
Datetime = DateTimeOffset.UtcNow,
Pending = false,
};
var result = await _sut.HandleAsync(account, [transaction], TestContext.Current.CancellationToken);
result.Should().Be(1);
existingTransaction.MerchantName.Should().Be(transaction.MerchantName);
}
}