diff --git a/CallbackHandler.BusinessLogic.Tests/CallbackHandler.BusinessLogic.Tests.csproj b/CallbackHandler.BusinessLogic.Tests/CallbackHandler.BusinessLogic.Tests.csproj
index aabe68a..b84ce9d 100644
--- a/CallbackHandler.BusinessLogic.Tests/CallbackHandler.BusinessLogic.Tests.csproj
+++ b/CallbackHandler.BusinessLogic.Tests/CallbackHandler.BusinessLogic.Tests.csproj
@@ -30,6 +30,7 @@
+
diff --git a/CallbackHandler.BusinessLogic.Tests/Mediator/DummyCallbackDomainService.cs b/CallbackHandler.BusinessLogic.Tests/Mediator/DummyCallbackDomainService.cs
new file mode 100644
index 0000000..566b461
--- /dev/null
+++ b/CallbackHandler.BusinessLogic.Tests/Mediator/DummyCallbackDomainService.cs
@@ -0,0 +1,19 @@
+namespace CallbackHandler.BusinessLogic.Tests.Mediator;
+
+using System;
+using System.Threading;
+using System.Threading.Tasks;
+using BusinessLogic.Services;
+using CallbackHandlers.Models;
+
+public class DummyCallbackDomainService : ICallbackDomainService
+{
+ public async Task RecordCallback(Guid callbackId,
+ String typeString,
+ MessageFormat messageFormat,
+ String callbackMessage,
+ String reference,
+ String[] destinations,
+ CancellationToken cancellationToken) {
+ }
+}
\ No newline at end of file
diff --git a/CallbackHandler.BusinessLogic.Tests/Mediator/MediatorTests.cs b/CallbackHandler.BusinessLogic.Tests/Mediator/MediatorTests.cs
index 26da5cf..a6ca824 100644
--- a/CallbackHandler.BusinessLogic.Tests/Mediator/MediatorTests.cs
+++ b/CallbackHandler.BusinessLogic.Tests/Mediator/MediatorTests.cs
@@ -1,12 +1,103 @@
-using System;
+using CallbackHander.Testing;
+using MediatR;
+using Microsoft.AspNetCore.Hosting;
+using Microsoft.Extensions.Configuration;
+using Microsoft.Extensions.Hosting;
+using Moq;
+using System;
using System.Collections.Generic;
+using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
+using Xunit;
namespace CallbackHandler.BusinessLogic.Tests.Mediator
{
- internal class MediatorTests
+ using BusinessLogic.Services;
+ using Lamar;
+ using Microsoft.Extensions.DependencyInjection;
+
+ public class MediatorTests
{
+ private List Requests = new List();
+
+ public MediatorTests()
+ {
+ this.Requests.Add(TestData.RecordCallbackRequest);
+ }
+
+ [Fact]
+ public async Task Mediator_Send_RequestHandled()
+ {
+ Mock hostingEnvironment = new Mock();
+ hostingEnvironment.Setup(he => he.EnvironmentName).Returns("Development");
+ hostingEnvironment.Setup(he => he.ContentRootPath).Returns("/home");
+ hostingEnvironment.Setup(he => he.ApplicationName).Returns("Test Application");
+
+ ServiceRegistry services = new ServiceRegistry();
+ Startup s = new Startup(hostingEnvironment.Object);
+ Startup.Configuration = this.SetupMemoryConfiguration();
+
+ this.AddTestRegistrations(services, hostingEnvironment.Object);
+ s.ConfigureContainer(services);
+ Startup.Container.AssertConfigurationIsValid(AssertMode.Full);
+
+ List errors = new List();
+ IMediator mediator = Startup.Container.GetService();
+ foreach (IBaseRequest baseRequest in this.Requests)
+ {
+ try
+ {
+ await mediator.Send(baseRequest);
+ }
+ catch (Exception ex)
+ {
+ errors.Add(ex.Message);
+ }
+ }
+
+ if (errors.Any() == true)
+ {
+ String errorMessage = String.Join(Environment.NewLine, errors);
+ throw new Exception(errorMessage);
+ }
+ }
+
+ private IConfigurationRoot SetupMemoryConfiguration()
+ {
+ Dictionary configuration = new Dictionary();
+
+ IConfigurationBuilder builder = new ConfigurationBuilder();
+
+ configuration.Add("ConnectionStrings:HealthCheck", "HeathCheckConnString");
+ configuration.Add("SecurityConfiguration:Authority", "https://127.0.0.1");
+ configuration.Add("EventStoreSettings:ConnectionString", "https://127.0.0.1:2113");
+ configuration.Add("EventStoreSettings:ConnectionName", "UnitTestConnection");
+ configuration.Add("EventStoreSettings:UserName", "admin");
+ configuration.Add("EventStoreSettings:Password", "changeit");
+ configuration.Add("AppSettings:UseConnectionStringConfig", "false");
+ configuration.Add("AppSettings:SecurityService", "http://127.0.0.1");
+ configuration.Add("AppSettings:MessagingServiceApi", "http://127.0.0.1");
+ configuration.Add("AppSettings:DatabaseEngine", "SqlServer");
+
+ builder.AddInMemoryCollection(configuration);
+
+ return builder.Build();
+ }
+
+ private void AddTestRegistrations(ServiceRegistry services,
+ IWebHostEnvironment hostingEnvironment)
+ {
+ services.AddLogging();
+ DiagnosticListener diagnosticSource = new DiagnosticListener(hostingEnvironment.ApplicationName);
+ services.AddSingleton(diagnosticSource);
+ services.AddSingleton(diagnosticSource);
+ services.AddSingleton(hostingEnvironment);
+ services.AddSingleton(hostingEnvironment);
+ services.AddSingleton(Startup.Configuration);
+
+ services.OverrideServices(s => { s.AddSingleton(); });
+ }
}
}