feat(api): support passing and persistenting currency code for balances

This commit is contained in:
Stevan Freeborn
2026-02-14 06:46:05 -06:00
parent 701b89d704
commit 9c0f642f90
4 changed files with 21 additions and 6 deletions
@@ -16,7 +16,7 @@ public class AddTests(TestApi testApi) : IntegrationTest(testApi)
}
[Fact]
public async Task Add_WhenCalledWithoutInstitutionIdOrAccountIdOrAccountName_ItShouldReturn400WithProblemDetails()
public async Task Add_WhenCalledWithoutRequiredInformation_ItShouldReturn400WithProblemDetails()
{
using var request = HttpRequestBuilder.New()
.Post(AddUri)
@@ -31,6 +31,7 @@ public class AddTests(TestApi testApi) : IntegrationTest(testApi)
["PlaidInstitutionId"] = ["The PlaidInstitutionId field is required."],
["PlaidAccountId"] = ["The PlaidAccountId field is required."],
["PlaidAccountName"] = ["The PlaidAccountName field is required."],
["AccountCurrencyCode"] = ["The AccountCurrencyCode field is required."],
});
}
@@ -44,6 +45,7 @@ public class AddTests(TestApi testApi) : IntegrationTest(testApi)
{
plaidAccountId = "accountId",
plaidAccountName = "Some Account",
accountCurrencyCode = "USD",
})
.Build();
@@ -65,6 +67,7 @@ public class AddTests(TestApi testApi) : IntegrationTest(testApi)
{
plaidInstitutionId = "institutionId",
plaidAccountName = "Some Account",
accountCurrencyCode = "USD",
})
.Build();
@@ -86,6 +89,7 @@ public class AddTests(TestApi testApi) : IntegrationTest(testApi)
{
plaidInstitutionId = "institutionId",
plaidAccountId = "accountId",
accountCurrencyCode = "USD",
})
.Build();
@@ -108,6 +112,7 @@ public class AddTests(TestApi testApi) : IntegrationTest(testApi)
plaidInstitutionId = "id",
plaidAccountId = "id",
plaidAccountName = "Some Account",
accountCurrencyCode = "USD",
})
.Build();
@@ -141,6 +146,7 @@ public class AddTests(TestApi testApi) : IntegrationTest(testApi)
plaidInstitutionId = "id",
plaidAccountId = "id",
plaidAccountName = "Some Account",
accountCurrencyCode = "USD",
})
.Build();
@@ -189,6 +195,7 @@ public class AddTests(TestApi testApi) : IntegrationTest(testApi)
plaidInstitutionId = ((PlaidMetadata)institution.Metadata!).PlaidId,
plaidAccountId = ((PlaidAccountMetadata)account.Metadata!).PlaidId,
plaidAccountName = ((PlaidAccountMetadata)account.Metadata).PlaidName,
accountCurrencyCode = "USD",
})
.Build();
@@ -223,6 +230,7 @@ public class AddTests(TestApi testApi) : IntegrationTest(testApi)
var newAccountId = "newAccountId";
var newAccountName = "New Account";
var expectedBalance = 100;
var expectedCurrencyCode = "USD";
using var request = HttpRequestBuilder.New()
.Post(AddUri)
@@ -234,6 +242,7 @@ public class AddTests(TestApi testApi) : IntegrationTest(testApi)
plaidAccountName = newAccountName,
accountCurrentBalance = expectedBalance,
accountAvailableBalance = expectedBalance,
accountCurrencyCode = expectedCurrencyCode,
})
.Build();
@@ -264,7 +273,8 @@ public class AddTests(TestApi testApi) : IntegrationTest(testApi)
.Balances.Should().ContainSingle(
b => b.AccountId == updatedUser.Accounts.First().Id &&
b.Current == expectedBalance &&
b.Available == expectedBalance
b.Available == expectedBalance &&
b.CurrencyCode == expectedCurrencyCode
);
}
}
@@ -10,6 +10,7 @@ public class GetAvailableTests(TestApi testApi) : IntegrationTest(testApi)
{
return new($"/institutions/{id}/available", UriKind.Relative);
}
[Fact]
public async Task GetAvailable_WhenCalledAndUnauthenticated_ItShouldReturn401WithProblemDetails()
{