Skip to content

Commit 118cf0e

Browse files
Merge pull request #244 from TransactionProcessing/task/#239_fixbootstrappertestandaddmediatortests
Fix bootstrapper test and add mediator tests
2 parents a2a88b2 + 04eab8c commit 118cf0e

26 files changed

Lines changed: 1860 additions & 1639 deletions
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
namespace FileProcessor.BusinessLogic.Tests;
2+
3+
using System;
4+
using System.Threading;
5+
using System.Threading.Tasks;
6+
using Requests;
7+
using Services;
8+
9+
public class DummyFileProcessorDomainService : IFileProcessorDomainService
10+
{
11+
public async Task<Guid> UploadFile(UploadFileRequest request,
12+
CancellationToken cancellationToken) {
13+
return Guid.NewGuid();
14+
}
15+
16+
public async Task ProcessUploadedFile(ProcessUploadedFileRequest request,
17+
CancellationToken cancellationToken) {
18+
}
19+
20+
public async Task ProcessSafaricomTopup(SafaricomTopupRequest request,
21+
CancellationToken cancellationToken) {
22+
}
23+
24+
public async Task ProcessVoucher(VoucherRequest request,
25+
CancellationToken cancellationToken) {
26+
}
27+
28+
public async Task ProcessTransactionForFileLine(ProcessTransactionForFileLineRequest request,
29+
CancellationToken cancellationToken) {
30+
}
31+
}

FileProcessor.BusinessLogic.Tests/FileProcessor.BusinessLogic.Tests.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
<ItemGroup>
2828
<ProjectReference Include="..\FileProcessor.BusinessLogic\FileProcessor.BusinessLogic.csproj" />
2929
<ProjectReference Include="..\FileProcessor.Testing\FileProcessor.Testing.csproj" />
30+
<ProjectReference Include="..\FileProcessor\FileProcessor.csproj" />
3031
</ItemGroup>
3132

3233
</Project>

FileProcessor.BusinessLogic.Tests/FileProcessorDomainServiceTests.cs

Lines changed: 947 additions & 0 deletions
Large diffs are not rendered by default.

FileProcessor.BusinessLogic.Tests/FileRequestHandlerTests.cs

Lines changed: 23 additions & 924 deletions
Large diffs are not rendered by default.
Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
using FileProcessor.Testing;
2+
using MediatR;
3+
using Microsoft.AspNetCore.Hosting;
4+
using Microsoft.Extensions.Configuration;
5+
using Microsoft.Extensions.Hosting;
6+
using Moq;
7+
using System;
8+
using System.Collections.Generic;
9+
using System.Diagnostics;
10+
using System.Linq;
11+
using System.Text;
12+
using System.Threading.Tasks;
13+
using Xunit;
14+
15+
namespace FileProcessor.BusinessLogic.Tests
16+
{
17+
using Lamar;
18+
using Microsoft.Extensions.DependencyInjection;
19+
using Services;
20+
21+
public class MediatorTests
22+
{
23+
private List<IBaseRequest> Requests = new List<IBaseRequest>();
24+
25+
public MediatorTests()
26+
{
27+
this.Requests.Add(TestData.UploadFileRequest);
28+
this.Requests.Add(TestData.ProcessUploadedFileRequest);
29+
this.Requests.Add(TestData.SafaricomTopupRequest);
30+
this.Requests.Add(TestData.VoucherRequest);
31+
this.Requests.Add(TestData.ProcessTransactionForFileLineRequest);
32+
}
33+
34+
[Fact]
35+
public async Task Mediator_Send_RequestHandled()
36+
{
37+
Mock<IWebHostEnvironment> hostingEnvironment = new Mock<IWebHostEnvironment>();
38+
hostingEnvironment.Setup(he => he.EnvironmentName).Returns("Development");
39+
hostingEnvironment.Setup(he => he.ContentRootPath).Returns("/home");
40+
hostingEnvironment.Setup(he => he.ApplicationName).Returns("Test Application");
41+
42+
ServiceRegistry services = new ServiceRegistry();
43+
Startup s = new Startup(hostingEnvironment.Object);
44+
Startup.Configuration = this.SetupMemoryConfiguration();
45+
46+
this.AddTestRegistrations(services, hostingEnvironment.Object);
47+
s.ConfigureContainer(services);
48+
Startup.Container.AssertConfigurationIsValid(AssertMode.Full);
49+
50+
List<String> errors = new List<String>();
51+
IMediator mediator = Startup.Container.GetService<IMediator>();
52+
foreach (IBaseRequest baseRequest in this.Requests)
53+
{
54+
try
55+
{
56+
await mediator.Send(baseRequest);
57+
}
58+
catch (Exception ex)
59+
{
60+
errors.Add(ex.Message);
61+
}
62+
}
63+
64+
if (errors.Any() == true)
65+
{
66+
String errorMessage = String.Join(Environment.NewLine, errors);
67+
throw new Exception(errorMessage);
68+
}
69+
}
70+
71+
private IConfigurationRoot SetupMemoryConfiguration()
72+
{
73+
IConfigurationBuilder builder = new ConfigurationBuilder();
74+
75+
//configuration.Add("ConnectionStrings:HealthCheck", "HeathCheckConnString");
76+
//configuration.Add("SecurityConfiguration:Authority", "https://127.0.0.1");
77+
//configuration.Add("EventStoreSettings:ConnectionString", "https://127.0.0.1:2113");
78+
//configuration.Add("EventStoreSettings:ConnectionName", "UnitTestConnection");
79+
//configuration.Add("EventStoreSettings:UserName", "admin");
80+
//configuration.Add("EventStoreSettings:Password", "changeit");
81+
//configuration.Add("AppSettings:UseConnectionStringConfig", "false");
82+
//configuration.Add("AppSettings:SecurityService", "http://127.0.0.1");
83+
//configuration.Add("AppSettings:MessagingServiceApi", "http://127.0.0.1");
84+
//configuration.Add("AppSettings:TransactionProcessorApi", "http://127.0.0.1");
85+
//configuration.Add("AppSettings:DatabaseEngine", "SqlServer");
86+
//configuration.Add("AppSettings:EmailProxy", "UnitTest");
87+
//configuration.Add("AppSettings:SMSProxy", "UnitTest");
88+
89+
builder.AddInMemoryCollection(TestData.DefaultAppSettings);
90+
91+
return builder.Build();
92+
}
93+
94+
private void AddTestRegistrations(ServiceRegistry services,
95+
IWebHostEnvironment hostingEnvironment)
96+
{
97+
services.AddLogging();
98+
DiagnosticListener diagnosticSource = new DiagnosticListener(hostingEnvironment.ApplicationName);
99+
services.AddSingleton<DiagnosticSource>(diagnosticSource);
100+
services.AddSingleton<DiagnosticListener>(diagnosticSource);
101+
services.AddSingleton<IWebHostEnvironment>(hostingEnvironment);
102+
services.AddSingleton<IHostEnvironment>(hostingEnvironment);
103+
services.AddSingleton<IConfiguration>(Startup.Configuration);
104+
105+
services.OverrideServices(s => { s.AddSingleton<IFileProcessorDomainService, DummyFileProcessorDomainService>(); });
106+
}
107+
}
108+
}

FileProcessor.BusinessLogic.Tests/RequestTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ public class RequestTests
1212
[Fact]
1313
public void UploadFileRequest_CanBeCreated_IsCreated()
1414
{
15-
UploadFileRequest uploadFileRequest =
15+
UploadFileRequest uploadFileRequest =
1616
new UploadFileRequest(TestData.EstateId, TestData.MerchantId, TestData.UserId, TestData.FilePath, TestData.FileProfileId, TestData.FileUploadedDateTime);
1717

1818
uploadFileRequest.EstateId.ShouldBe(TestData.EstateId);

FileProcessor.BusinessLogic/Common/GuidCalculator.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
namespace FileProcessor.BusinessLogic.Common
22
{
33
using System;
4+
using System.Diagnostics.CodeAnalysis;
45

6+
[ExcludeFromCodeCoverage]
57
public static class GuidCalculator
68
{
79
#region Methods

0 commit comments

Comments
 (0)