From 497dedf6ac971aa4db9ac3d997a339560ee580a2 Mon Sep 17 00:00:00 2001 From: Stevan Freeborn <65925598+StevanFreeborn@users.noreply.github.com> Date: Sat, 14 Feb 2026 06:19:19 -0600 Subject: [PATCH] feat(api): return balance info to frontend --- src/FiscalOS.API/Institutions/GetAvailable/Response.cs | 8 +++++++- .../Integration/Institutions/GetAvailableTests.cs | 9 ++++----- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/FiscalOS.API/Institutions/GetAvailable/Response.cs b/src/FiscalOS.API/Institutions/GetAvailable/Response.cs index b1afc7d..a7c6dd1 100644 --- a/src/FiscalOS.API/Institutions/GetAvailable/Response.cs +++ b/src/FiscalOS.API/Institutions/GetAvailable/Response.cs @@ -22,6 +22,9 @@ internal sealed record AccountDto { public string ProviderId { get; init; } = string.Empty; public string ProviderName { get; init; } = string.Empty; + public decimal CurrentBalance { get; init; } + public decimal AvailableBalance { get; init; } + public string CurrencyCode { get; init; } = string.Empty; [JsonConstructor] private AccountDto() @@ -33,7 +36,10 @@ internal sealed record AccountDto return new AccountDto { ProviderId = plaidAccount.AccountId, - ProviderName = plaidAccount.Name + ProviderName = plaidAccount.Name, + AvailableBalance = plaidAccount.Available, + CurrentBalance = plaidAccount.Current, + CurrencyCode = plaidAccount.CurrencyCode, }; } } \ No newline at end of file diff --git a/tests/FiscalOS.API.Tests/Integration/Institutions/GetAvailableTests.cs b/tests/FiscalOS.API.Tests/Integration/Institutions/GetAvailableTests.cs index a258fd5..228626e 100644 --- a/tests/FiscalOS.API.Tests/Integration/Institutions/GetAvailableTests.cs +++ b/tests/FiscalOS.API.Tests/Integration/Institutions/GetAvailableTests.cs @@ -6,8 +6,10 @@ namespace FiscalOS.API.Tests.Integration.Institutions; public class GetAvailableTests(TestApi testApi) : IntegrationTest(testApi) { - private static Uri GetAvailableUri(Guid id) => new($"/institutions/{id}/available", UriKind.Relative); - + private static Uri GetAvailableUri(Guid id) + { + return new($"/institutions/{id}/available", UriKind.Relative); + } [Fact] public async Task GetAvailable_WhenCalledAndUnauthenticated_ItShouldReturn401WithProblemDetails() { @@ -46,7 +48,6 @@ public class GetAvailableTests(TestApi testApi) : IntegrationTest(testApi) context.Add(user); await context.SaveChangesAsync(ct); - return user; }, TestContext.Current.CancellationToken); @@ -89,7 +90,6 @@ public class GetAvailableTests(TestApi testApi) : IntegrationTest(testApi) { AccessToken = exchangeTokenResponse.AccessToken, }); - var encryptedAccessToken = await encryptor.EncryptAsyncFor(user, exchangeTokenResponse.AccessToken, ct); var institutionMetadata = PlaidMetadata.From(institutionId, "Some Bank", encryptedAccessToken); var institution = Institution.From("Some Bank", institutionMetadata); @@ -99,7 +99,6 @@ public class GetAvailableTests(TestApi testApi) : IntegrationTest(testApi) context.Add(user); context.Add(institution); await context.SaveChangesAsync(ct); - return (user, institution, accountsResponse.Accounts); }, TestContext.Current.CancellationToken);