Skip to content

Commit

Permalink
[#227] [add] bootstrapping
Browse files Browse the repository at this point in the history
[#227] [add] new controller executor
[#227] [r] tests
[#227] [r] controller execution args
  • Loading branch information
i4004 committed Jan 21, 2024
1 parent aca21e1 commit 189d540
Show file tree
Hide file tree
Showing 22 changed files with 505 additions and 484 deletions.
1 change: 1 addition & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"dotnet-test-explorer.testProjectPath": "src/**/*Tests.csproj",
"dotnet-test-explorer.testArguments": "/p:CollectCoverage=true /p:CoverletOutputFormat=lcov /p:CoverletOutput=./coverage/lcov.info",
"cSpell.words": [
"appsettings",
"ASPNETCORE",
"Bootstrapper",
"Catched",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,10 @@
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Simplify.DI;
using Simplify.Web.Core.Controllers.Execution;
using Simplify.Web.Meta;

namespace Simplify.Web.RegistrationsTests.CustomTypes;

public class CustomControllerExecutor : IControllerExecutor
{
public Task<ControllerResponseResult> Execute(IControllerMetaData controllerMetaData, IDIResolver resolver, HttpContext context, IDictionary<string, object>? routeParameters = null) =>
throw new NotImplementedException();
public Task<ControllerResponseResult> Execute(IControllerExecutionArgs args) => throw new NotImplementedException();
}
231 changes: 108 additions & 123 deletions src/Simplify.Web.Tests/Core/Controllers/ControllersProcessorTests.cs

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1,24 +1,20 @@
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using System.Threading.Tasks;
using Moq;
using NUnit.Framework;
using Simplify.DI;
using Simplify.Web.Core.Controllers.Execution;
using Simplify.Web.Meta;
using Simplify.Web.Tests.TestEntities;

namespace Simplify.Web.Tests.Core.Controllers.Execution;

[TestFixture]
public class Controller1ExecutorTests
{
private readonly IControllerExecutionArgs _args = Mock.Of<IControllerExecutionArgs>();

private Controller1Executor _executor = null!;
private Mock<IController1Factory> _controllerFactory = null!;

private Mock<Controller> _syncController = null!;

private Mock<AsyncController> _asyncController = null!;
private Mock<Controller<TestModel>> _syncModelController = null!;
private Mock<AsyncController<TestModel>> _asyncModelController = null!;
Expand All @@ -43,22 +39,14 @@ public async Task Execute_ControllerWithNoResponse_InvokedAndNull()
var response = Mock.Of<ControllerResponse>();

_controllerFactory.Setup(x =>
x.CreateController(It.IsAny<Type>(),
It.IsAny<IDIContainerProvider>(),
It.IsAny<HttpContext>(),
It.IsAny<IDictionary<string, object>>()))
x.CreateController(It.Is<IControllerExecutionArgs>(x => x == _args)))
.Returns(_syncController.Object);

// Act
var result = await _executor.Execute(Mock.Of<IControllerMetaData>(), null!, null!);
var result = await _executor.Execute(_args);

// Assert

_controllerFactory.Verify(x =>
x.CreateController(It.IsAny<Type>(),
It.IsAny<IDIContainerProvider>(),
It.IsAny<HttpContext>(),
It.IsAny<IDictionary<string, object>>()));
_controllerFactory.Verify(x => x.CreateController(It.Is<IControllerExecutionArgs>(x => x == _args)));

_syncController.Verify(x => x.Invoke());

Expand All @@ -73,25 +61,18 @@ public async Task Execute_ControllerWithResponse_InvokedAndResponseReturned()
var response = Mock.Of<ControllerResponse>();

_controllerFactory.Setup(x =>
x.CreateController(It.IsAny<Type>(),
It.IsAny<IDIContainerProvider>(),
It.IsAny<HttpContext>(),
It.IsAny<IDictionary<string, object>>()))
x.CreateController(It.Is<IControllerExecutionArgs>(x => x == _args)))
.Returns(_syncController.Object);

_syncController.Setup(x => x.Invoke())
.Returns(response);

// Act
var result = await _executor.Execute(Mock.Of<IControllerMetaData>(), null!, null!);
var result = await _executor.Execute(_args);

// Assert

_controllerFactory.Verify(x =>
x.CreateController(It.IsAny<Type>(),
It.IsAny<IDIContainerProvider>(),
It.IsAny<HttpContext>(),
It.IsAny<IDictionary<string, object>>()));
_controllerFactory.Verify(x => x.CreateController(It.Is<IControllerExecutionArgs>(x => x == _args)));

_syncController.Verify(x => x.Invoke());

Expand All @@ -106,32 +87,24 @@ public async Task Process_ModelControllerWithResponse_InvokedAndResponseReturned
var response = Mock.Of<ControllerResponse>();

_controllerFactory.Setup(x =>
x.CreateController(It.IsAny<Type>(),
It.IsAny<IDIContainerProvider>(),
It.IsAny<HttpContext>(),
It.IsAny<IDictionary<string, object>>()))
x.CreateController(It.Is<IControllerExecutionArgs>(x => x == _args)))
.Returns(_syncModelController.Object);

_syncModelController.Setup(x => x.Invoke())
.Returns(response);

// Act
var result = await _executor.Execute(Mock.Of<IControllerMetaData>(), null!, null!);
var result = await _executor.Execute(_args);

// Assert

_controllerFactory.Verify(x =>
x.CreateController(It.IsAny<Type>(),
It.IsAny<IDIContainerProvider>(),
It.IsAny<HttpContext>(),
It.IsAny<IDictionary<string, object>>()));
_controllerFactory.Verify(x => x.CreateController(It.Is<IControllerExecutionArgs>(x => x == _args)));

_syncModelController.Verify(x => x.Invoke());

Assert.That(result, Is.EqualTo(response));
}


[Test]
public async Task Execute_AsyncControllerWithResponse_InvokedAndResponseReturned()
{
Expand All @@ -140,25 +113,18 @@ public async Task Execute_AsyncControllerWithResponse_InvokedAndResponseReturned
var response = Mock.Of<ControllerResponse>();

_controllerFactory.Setup(x =>
x.CreateController(It.IsAny<Type>(),
It.IsAny<IDIContainerProvider>(),
It.IsAny<HttpContext>(),
It.IsAny<IDictionary<string, object>>()))
x.CreateController(It.Is<IControllerExecutionArgs>(x => x == _args)))
.Returns(_asyncController.Object);

_asyncController.Setup(x => x.Invoke())
.Returns(Task.FromResult(response)!);

// Act
var result = await _executor.Execute(Mock.Of<IControllerMetaData>(), null!, null!);
var result = await _executor.Execute(_args);

// Assert

_controllerFactory.Verify(x =>
x.CreateController(It.IsAny<Type>(),
It.IsAny<IDIContainerProvider>(),
It.IsAny<HttpContext>(),
It.IsAny<IDictionary<string, object>>()));
_controllerFactory.Verify(x => x.CreateController(It.Is<IControllerExecutionArgs>(x => x == _args)));

_asyncController.Verify(x => x.Invoke());

Expand All @@ -173,25 +139,18 @@ public async Task Process_AsyncModelControllerWithResponse_InvokedAndResponseRet
var response = Mock.Of<ControllerResponse>();

_controllerFactory.Setup(x =>
x.CreateController(It.IsAny<Type>(),
It.IsAny<IDIContainerProvider>(),
It.IsAny<HttpContext>(),
It.IsAny<IDictionary<string, object>>()))
x.CreateController(It.Is<IControllerExecutionArgs>(x => x == _args)))
.Returns(_asyncModelController.Object);

_asyncModelController.Setup(x => x.Invoke())
.Returns(Task.FromResult(response)!);

// Act
var result = await _executor.Execute(Mock.Of<IControllerMetaData>(), null!, null!);
var result = await _executor.Execute(_args);

// Assert

_controllerFactory.Verify(x =>
x.CreateController(It.IsAny<Type>(),
It.IsAny<IDIContainerProvider>(),
It.IsAny<HttpContext>(),
It.IsAny<IDictionary<string, object>>()));
_controllerFactory.Verify(x => x.CreateController(It.Is<IControllerExecutionArgs>(x => x == _args)));

_asyncModelController.Verify(x => x.Invoke());

Expand Down
Loading

0 comments on commit 189d540

Please sign in to comment.