public async Task GetCalculationByName_GivenModelDoesNotContainAcalculationName_ReturnsBadRequest() { //Arrange CalculationGetModel model = new CalculationGetModel { SpecificationId = SpecificationId }; string json = JsonConvert.SerializeObject(model); byte[] byteArray = Encoding.UTF8.GetBytes(json); MemoryStream stream = new MemoryStream(byteArray); HttpRequest request = Substitute.For <HttpRequest>(); request .Body .Returns(stream); ILogger logger = CreateLogger(); SpecificationsService service = CreateService(logs: logger); //Act IActionResult result = await service.GetCalculationByName(request); //Assert result .Should() .BeOfType <BadRequestObjectResult>(); logger .Received(1) .Error(Arg.Is("No calculation name was provided to GetCalculationByName")); }
public async Task GetCalculationByName_GivenSpecificationExistsAndCalculationExists_ReturnsSuccess() { //Arrange Calculation calc = new Calculation { Name = CalculationName }; CalculationGetModel model = new CalculationGetModel { SpecificationId = SpecificationId, Name = CalculationName }; string json = JsonConvert.SerializeObject(model); byte[] byteArray = Encoding.UTF8.GetBytes(json); MemoryStream stream = new MemoryStream(byteArray); HttpRequest request = Substitute.For <HttpRequest>(); request .Body .Returns(stream); ILogger logger = CreateLogger(); ISpecificationsRepository specificationsRepository = CreateSpecificationsRepository(); specificationsRepository .GetCalculationBySpecificationIdAndCalculationName(Arg.Is(SpecificationId), Arg.Is(CalculationName)) .Returns(calc); SpecificationsService service = CreateService(specificationsRepository: specificationsRepository, logs: logger); //Act IActionResult result = await service.GetCalculationByName(request); //Assert result .Should() .BeOfType <OkObjectResult>(); logger .Received(1) .Information(Arg.Is($"A calculation was found for specification id {SpecificationId} and name {CalculationName}")); }