static ISpecificationsRepository CreateSpecificationsRepository(bool hasCalculation = false) { ISpecificationsRepository repository = Substitute.For <ISpecificationsRepository>(); repository .GetCalculationBySpecificationIdAndCalculationName(Arg.Is(specificationId), Arg.Is(name)) .Returns(hasCalculation ? new Calculation() : null); return(repository); }
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}")); }