using Diligent.WebAPI.Contracts.Models; using NSubstitute.ReturnsExtensions; namespace Diligent.WebAPI.Tests.Controllers { public class ScreeningTestControllerTests { private IScreeningTestService _service = Substitute.For(); private readonly List tests; public ScreeningTestControllerTests() { tests = new List { new TestMicroserviceRequest{ Id = 1, Name = "Intership .NET"}, new TestMicroserviceRequest{ Id = 2, Name = "Junior .NET"}, new TestMicroserviceRequest{ Id = 3, Name = "Senior .NET"} }; } [Fact] public async Task Get_ShouldReturn_200OKAndListOfTests() { var baseResult = new Contracts.Models.BaseResult> { DataObject = tests }; _service.GetScreening().Returns(baseResult); ScreeningTestController controller = new(_service); var result = await controller.Get(); (result as OkObjectResult).StatusCode.Should().Be(200); } [Fact] public async Task Post_ShouldReturnBadRequest_WhenErrorIsPresent() { _service.When(x => x.SendTest(Arg.Any())).ReturnsNull(); ScreeningTestController controller = new(_service); var result = await controller.Post(new TestMicroserviceInviteRequest()); (result as BadRequestResult).StatusCode.Should().Be(400); } [Fact] public async Task Post_ShouldReturn_200OK() { _service.SendTest(Arg.Any()).Returns(true); ScreeningTestController controller = new(_service); var result = await controller.Post(new TestMicroserviceInviteRequest()); (result as OkResult).StatusCode.Should().Be(200); } } }