From 159252f7031f509bbf37f7ff004e39b5430afcad Mon Sep 17 00:00:00 2001 From: Stuart Ferguson Date: Sun, 1 Jan 2023 12:22:16 +0000 Subject: [PATCH 1/3] Missed mediator tests --- ...CallbackHandler.BusinessLogic.Tests.csproj | 1 + .../Mediator/MediatorTests.cs | 110 +++++++++++++++++- 2 files changed, 109 insertions(+), 2 deletions(-) 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/MediatorTests.cs b/CallbackHandler.BusinessLogic.Tests/Mediator/MediatorTests.cs index 26da5cf..4fbbd14 100644 --- a/CallbackHandler.BusinessLogic.Tests/Mediator/MediatorTests.cs +++ b/CallbackHandler.BusinessLogic.Tests/Mediator/MediatorTests.cs @@ -1,12 +1,118 @@ -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 System.Threading; + using BusinessLogic.Services; + using CallbackHandlers.Models; + 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(); }); + } + } + + public class DummyCallbackDomainService : ICallbackDomainService { + public async Task RecordCallback(Guid callbackId, + String typeString, + MessageFormat messageFormat, + String callbackMessage, + String reference, + String[] destinations, + CancellationToken cancellationToken) { + + } } } From 7232dd02f966f1a71a66dd242acfd2459abf3288 Mon Sep 17 00:00:00 2001 From: Stuart Ferguson Date: Sun, 1 Jan 2023 12:23:43 +0000 Subject: [PATCH 2/3] ... --- .../Mediator/DummyCallbackDomainService.cs | 20 +++++++++++++++++++ .../Mediator/MediatorTests.cs | 15 -------------- 2 files changed, 20 insertions(+), 15 deletions(-) create mode 100644 CallbackHandler.BusinessLogic.Tests/Mediator/DummyCallbackDomainService.cs diff --git a/CallbackHandler.BusinessLogic.Tests/Mediator/DummyCallbackDomainService.cs b/CallbackHandler.BusinessLogic.Tests/Mediator/DummyCallbackDomainService.cs new file mode 100644 index 0000000..b09516c --- /dev/null +++ b/CallbackHandler.BusinessLogic.Tests/Mediator/DummyCallbackDomainService.cs @@ -0,0 +1,20 @@ +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 4fbbd14..a6ca824 100644 --- a/CallbackHandler.BusinessLogic.Tests/Mediator/MediatorTests.cs +++ b/CallbackHandler.BusinessLogic.Tests/Mediator/MediatorTests.cs @@ -14,9 +14,7 @@ namespace CallbackHandler.BusinessLogic.Tests.Mediator { - using System.Threading; using BusinessLogic.Services; - using CallbackHandlers.Models; using Lamar; using Microsoft.Extensions.DependencyInjection; @@ -102,17 +100,4 @@ private void AddTestRegistrations(ServiceRegistry services, services.OverrideServices(s => { s.AddSingleton(); }); } } - - public class DummyCallbackDomainService : ICallbackDomainService - { - public async Task RecordCallback(Guid callbackId, - String typeString, - MessageFormat messageFormat, - String callbackMessage, - String reference, - String[] destinations, - CancellationToken cancellationToken) { - - } - } } From bcebc452f46f8579606f52fc7ed0f2f8ed5df536 Mon Sep 17 00:00:00 2001 From: Stuart Ferguson Date: Sun, 1 Jan 2023 12:38:23 +0000 Subject: [PATCH 3/3] . --- .../Mediator/DummyCallbackDomainService.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/CallbackHandler.BusinessLogic.Tests/Mediator/DummyCallbackDomainService.cs b/CallbackHandler.BusinessLogic.Tests/Mediator/DummyCallbackDomainService.cs index b09516c..566b461 100644 --- a/CallbackHandler.BusinessLogic.Tests/Mediator/DummyCallbackDomainService.cs +++ b/CallbackHandler.BusinessLogic.Tests/Mediator/DummyCallbackDomainService.cs @@ -15,6 +15,5 @@ public async Task RecordCallback(Guid callbackId, String reference, String[] destinations, CancellationToken cancellationToken) { - } } \ No newline at end of file