Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 10 additions & 10 deletions Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@
<ItemGroup>
<PackageVersion Include="AspNetCore.HealthChecks.UI.Client" Version="9.0.0" />
<PackageVersion Include="AspNetCore.HealthChecks.Uris" Version="9.0.0" />
<PackageVersion Include="ClientProxyBase" Version="2026.9.7" />
<PackageVersion Include="ClientProxyBase" Version="2026.10.2" />
<PackageVersion Include="coverlet.collector" Version="10.0.1" />
<PackageVersion Include="HealthMonitoring.Client" Version="2026.9.3.34" />
<PackageVersion Include="HealthMonitoring.Client" Version="2026.9.4.48" />
<PackageVersion Include="Microsoft.Testing.Extensions.CodeCoverage" Version="18.11.2" />
<PackageVersion Include="Ductus.FluentDocker" Version="2.85.0" />
<PackageVersion Include="EventStoreProjections" Version="2023.12.3" />
Expand All @@ -16,7 +16,7 @@
<PackageVersion Include="Lamar.Microsoft.DependencyInjection" Version="16.0.0" />
<PackageVersion Include="MediatR" Version="14.2.0" />
<PackageVersion Include="MediatR.Extensions.Microsoft.DependencyInjection" Version="11.1.0" />
<PackageVersion Include="MessagingService.IntegrationTesting.Helpers" Version="2026.9.3.152" />
<PackageVersion Include="MessagingService.IntegrationTesting.Helpers" Version="2026.9.3.153" />
<PackageVersion Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="10.0.12" />
<PackageVersion Include="Microsoft.AspNetCore.Mvc.Testing" Version="10.0.12" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Relational" Version="10.0.12" />
Expand All @@ -38,20 +38,20 @@
<PackageVersion Include="Reqnroll" Version="3.3.4" />
<PackageVersion Include="Reqnroll.NUnit" Version="3.3.4" />
<PackageVersion Include="Reqnroll.Tools.MsBuild.Generation" Version="3.3.4" />
<PackageVersion Include="SecurityService.Client" Version="2026.9.3.183" />
<PackageVersion Include="SecurityService.IntegrationTesting.Helpers" Version="2026.9.3.183" />
<PackageVersion Include="Shared" Version="2026.9.7" />
<PackageVersion Include="Shared.IntegrationTesting" Version="2026.9.7" />
<PackageVersion Include="Shared.Results.Web" Version="2026.9.7" />
<PackageVersion Include="SecurityService.Client" Version="2026.9.3.198" />
<PackageVersion Include="SecurityService.IntegrationTesting.Helpers" Version="2026.9.3.198" />
<PackageVersion Include="Shared" Version="2026.10.2" />
<PackageVersion Include="Shared.IntegrationTesting" Version="2026.10.2" />
<PackageVersion Include="Shared.Results.Web" Version="2026.10.2" />
<PackageVersion Include="Shouldly" Version="4.3.0" />
<PackageVersion Include="Swashbuckle.AspNetCore" Version="10.2.3" />
<PackageVersion Include="Swashbuckle.AspNetCore.Annotations" Version="10.2.3" />
<PackageVersion Include="Swashbuckle.AspNetCore.Filters" Version="10.0.1" />
<PackageVersion Include="Swashbuckle.AspNetCore.Swagger" Version="10.2.3" />
<PackageVersion Include="Swashbuckle.AspNetCore.SwaggerGen" Version="10.2.3" />
<PackageVersion Include="Swashbuckle.AspNetCore.SwaggerUI" Version="10.2.3" />
<PackageVersion Include="TransactionProcessor.Client" Version="2026.9.3.403" />
<PackageVersion Include="TransactionProcessor.IntegrationTesting.Helpers" Version="2026.9.3.403" />
<PackageVersion Include="TransactionProcessor.Client" Version="2026.9.3.407" />
<PackageVersion Include="TransactionProcessor.IntegrationTesting.Helpers" Version="2026.9.3.407" />
<PackageVersion Include="Sentry.AspNetCore" Version="6.11.1" />
<PackageVersion Include="xunit.v3" Version="4.0.1" />
<PackageVersion Include="xunit.runner.visualstudio" Version="4.0.0" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -767,9 +767,13 @@ public async Task TransactionProcessorACLApplicationService_GetRecentActivityRec
.ReturnsAsync(Result.Success(new TransactionProcessorACL.BusinessLogic.BackendAPI.DataTransferObjects.RecentActivityReceiptSearchResponse
{
ReportDate = new DateTime(2026, 7, 8),
PageNumber = 2,
PageSize = 5,
TotalCount = 1,
Pagination = new TransactionProcessorACL.BusinessLogic.BackendAPI.DataTransferObjects.PaginationMetadata
{
PageNumber = 2,
PageSize = 5,
TotalItems = 1,
TotalPages = 1
},
Items =
[
new TransactionProcessorACL.BusinessLogic.BackendAPI.DataTransferObjects.RecentActivityReceiptSearchItem
Expand Down Expand Up @@ -805,7 +809,7 @@ public async Task TransactionProcessorACLApplicationService_GetRecentActivityRec
result.Data.Items[0].ReceiptReference.ShouldBe("RCPT-1");
capturedRequest.ShouldNotBeNull();
capturedRequest.MerchantReportingId.ShouldBe(12345);
capturedRequest.ReportDate.ShouldBe(new DateTime(2026, 7, 8));
capturedRequest.ReportDate.ShouldBe(new DateOnly(2026, 7, 8));
capturedRequest.SearchText.ShouldBe("abc");
capturedRequest.PageNumber.ShouldBe(2);
capturedRequest.PageSize.ShouldBe(5);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,8 +65,8 @@ public enum TransactionMixMeasure
public class TransactionMixSummaryRequest
{
public int? MerchantReportingId { get; set; }
public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; }
public DateOnly StartDate { get; set; }
public DateOnly EndDate { get; set; }
public TransactionMixBreakdown Breakdown { get; set; }
public TransactionMixMeasure Measure { get; set; }
public int TopN { get; set; } = 5;
Expand All @@ -75,8 +75,8 @@ public class TransactionMixSummaryRequest
public class MerchantDailyPerformanceSummaryRequest
{
public Int32 MerchantReportingId { get; set; }
public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; }
public DateOnly StartDate { get; set; }
public DateOnly EndDate { get; set; }
}

public sealed class MerchantDailyPerformanceSummaryResponse
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ public class RecentActivityReceiptSearchRequest

public int? MerchantReportingId { get; set; }

public DateTime ReportDate { get; set; }
public DateOnly ReportDate { get; set; }

public string? SearchText { get; set; }

Expand All @@ -22,13 +22,20 @@ public class RecentActivityReceiptSearchResponse
{
public DateTime ReportDate { get; set; }

public PaginationMetadata Pagination { get; set; } = new();

public List<RecentActivityReceiptSearchItem> Items { get; set; } = [];
}

public class PaginationMetadata
{
public int PageNumber { get; set; }

public int PageSize { get; set; }

public int TotalCount { get; set; }
public int TotalItems { get; set; }

public List<RecentActivityReceiptSearchItem> Items { get; set; } = [];
public int TotalPages { get; set; }
}

public class RecentActivityReceiptSearchItem
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -420,7 +420,7 @@ public async Task<Result<MerchantDailyPerformanceSummaryResponse>> GetMerchantDa
return ResultHelpers.CreateFailure(accessTokenResult);
}

BackendAPI.DataTransferObjects.MerchantDailyPerformanceSummaryRequest apiRequest = new BackendAPI.DataTransferObjects.MerchantDailyPerformanceSummaryRequest { StartDate = request.StartDate, EndDate = request.EndDate, MerchantReportingId = request.MerchantReportingId };
BackendAPI.DataTransferObjects.MerchantDailyPerformanceSummaryRequest apiRequest = new BackendAPI.DataTransferObjects.MerchantDailyPerformanceSummaryRequest { StartDate = DateOnly.FromDateTime(request.StartDate), EndDate = DateOnly.FromDateTime(request.EndDate), MerchantReportingId = request.MerchantReportingId };

TokenResponse accessToken = accessTokenResult.Data;
Result<BackendAPI.DataTransferObjects.MerchantDailyPerformanceSummaryResponse> apiResponse = await this.EstateReportingApiClient.GetMerchantDailyPerformanceSummary(accessToken.AccessToken, estateId, apiRequest, cancellationToken);
Expand Down Expand Up @@ -452,8 +452,8 @@ public async Task<Result<MerchantTransactionMixSummaryResponse>> GetMerchantTran
}

var apiRequest = new BackendAPI.DataTransferObjects.TransactionMixSummaryRequest {
StartDate = request.StartDate,
EndDate = request.EndDate,
StartDate = DateOnly.FromDateTime(request.StartDate),
EndDate = DateOnly.FromDateTime(request.EndDate),
Breakdown = Enum.Parse<BackendAPI.DataTransferObjects.TransactionMixBreakdown>(request.Breakdown.ToString()),
Measure = Enum.Parse<BackendAPI.DataTransferObjects.TransactionMixMeasure>(request.Measure.ToString()),
MerchantReportingId = request.MerchantReportingId,
Expand Down Expand Up @@ -501,7 +501,7 @@ public async Task<Result<RecentActivityReceiptSearchResponse>> GetRecentActivity
var apiRequest = new BackendAPI.DataTransferObjects.RecentActivityReceiptSearchRequest
{
MerchantReportingId = request.MerchantReportingId,
ReportDate = request.ReportDate.Date,
ReportDate = DateOnly.FromDateTime(request.ReportDate.Date),
SearchText = string.IsNullOrWhiteSpace(request.SearchText) ? null : request.SearchText.Trim(),
PageNumber = request.PageNumber,
PageSize = request.PageSize
Expand All @@ -516,9 +516,9 @@ public async Task<Result<RecentActivityReceiptSearchResponse>> GetRecentActivity
RecentActivityReceiptSearchResponse response = new()
{
ReportDate = apiResponse.Data.ReportDate,
PageNumber = apiResponse.Data.PageNumber,
PageSize = apiResponse.Data.PageSize,
TotalCount = apiResponse.Data.TotalCount,
PageNumber = apiResponse.Data.Pagination.PageNumber,
PageSize = apiResponse.Data.Pagination.PageSize,
TotalCount = apiResponse.Data.Pagination.TotalItems,
Items = apiResponse.Data.Items.Select(i => new RecentActivityReceiptSearchItem
{
Amount = i.Amount,
Expand Down Expand Up @@ -807,6 +807,8 @@ private static ProcessReconciliationResponse CreateProcessReconciliationResponse
ResponseCode = reconciliationResponse.ResponseCode,
ResponseMessage = reconciliationResponse.ResponseMessage,
TransactionId = reconciliationResponse.TransactionId,
EstateId = reconciliationResponse.EstateId,
MerchantId = reconciliationResponse.MerchantId,
};
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
using Shouldly;
using TestHosts.DataTransferObjects.AgencyBanking;

namespace TransactionProcessor.IntegrationTests.Common;

public static class AgencyBankingAssertions
{
public static void VerifyGlAccount(GlAccountResponse response, CreateGlAccountRequest request)
{
response.ShouldNotBeNull();
response.GlCode.ShouldBe(request.GlCode);
response.GlName.ShouldBe(request.GlName);
response.GlType.ShouldBe(request.GlType);
response.Currency.ShouldBe(request.Currency);
}

public static void VerifyCustomer(CustomerResponse response, CreateCustomerRequest request)
{
response.ShouldNotBeNull();
response.CustomerId.ShouldBe(request.CustomerId);
response.FullName.ShouldBe(request.FullName);
response.PhoneNumber.ShouldBe(request.PhoneNumber);
response.NationalId.ShouldBe(request.NationalId);
response.AccountNumber.ShouldBe(request.AccountNumber);
}

public static void VerifySettlementAccount(SettlementAccountResponse response, CreateSettlementAccountRequest request)
{
response.ShouldNotBeNull();
response.AccountNumber.ShouldBe(request.AccountNumber);
response.AccountName.ShouldBe(request.AccountName);
response.BankCode.ShouldBe(request.BankCode);
response.Currency.ShouldBe(request.Currency);
}

public static void VerifySystemConfiguration(SystemConfigurationDto response, SystemInitializationRequest request)
{
response.ShouldNotBeNull();
response.InstitutionCode.ShouldBe(request.InstitutionCode);
response.InstitutionName.ShouldBe(request.InstitutionName);
response.DefaultCurrency.ShouldBe(request.DefaultCurrency);
response.Timezone.ShouldBe(request.Timezone);
response.SettlementMode.ShouldBe(request.SettlementMode);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
using NUnit.Framework;
using TestHosts.DataTransferObjects.AgencyBanking;

namespace TransactionProcessor.IntegrationTests.Common;

[TestFixture]
public class AgencyBankingAssertionsTests
{
[Test]
public void VerifyGlAccount_rejects_a_persisted_account_with_the_wrong_code()
{
CreateGlAccountRequest request = new()
{
GlCode = "1000",
GlName = "Cash",
GlType = "Asset",
Currency = "KES"
};

GlAccountResponse response = new()
{
GlCode = "2000",
GlName = request.GlName,
GlType = request.GlType,
Currency = request.Currency
};

Assert.Throws<Shouldly.ShouldAssertException>(() => AgencyBankingAssertions.VerifyGlAccount(response, request));
}
}
Loading
Loading