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
@@ -16,6 +16,45 @@ public abstract class IntegrationTest : IAsyncLifetime
AppDbContext = new(options, _fileSystem);
}
protected async Task<User> CreateTestUserAsync()
{
var user = User.From(
"username",
"hashedPassword",
EncryptedDataKey.From("keyUsed", "encryptedKey")
);
var institutionMetadata = PlaidInstitutionMetadata.From(
"plaidId",
"plaidName",
"encryptedAccessToken",
"itemId"
);
var institution = Institution.From("institutionName", institutionMetadata);
user.AddInstitution(institution);
var accountMetadata = PlaidAccountMetadata.From("plaidId", "plaidName");
var account = Account.From("some account", accountMetadata);
user.AddAccount(account);
institution.AddAccount(account);
var transactionMetadata = PlaidTransactionMetadata.From("plaidId");
var transaction = Transaction.From(
"merchantName",
"description",
100,
DateTimeOffset.UtcNow,
transactionMetadata
);
user.AddTransaction(transaction);
account.AddTransaction(transaction);
await AppDbContext.AddAsync(user, TestContext.Current.CancellationToken);
await AppDbContext.SaveChangesAsync(TestContext.Current.CancellationToken);
return user;
}
public async ValueTask InitializeAsync()
{
await AppDbContext.Database.MigrateAsync();