public async Task GetTestScenariosBySpecificationId_WhenGivenASpecificationIdInValidFormat_ShouldReturnResult() { // Arrange IEnumerable <CalculateFunding.Common.ApiClient.Scenarios.Models.TestScenario> testScenarios = new List <CalculateFunding.Common.ApiClient.Scenarios.Models.TestScenario>() { new CalculateFunding.Common.ApiClient.Scenarios.Models.TestScenario() { SpecificationId = "Test" } }; IScenariosApiClient scenariosApiClient = Substitute.For <IScenariosApiClient>(); scenariosApiClient .GetTestScenariosBySpecificationId(Arg.Any <string>()) .Returns(new ApiResponse <IEnumerable <CalculateFunding.Common.ApiClient.Scenarios.Models.TestScenario> >(HttpStatusCode.OK, testScenarios)); ScenariosRepository scenariosRepository = new ScenariosRepository(scenariosApiClient, CreateCacheProvider(), CreateMapper()); // Act IEnumerable <TestScenario> result = await scenariosRepository.GetTestScenariosBySpecificationId("Test"); // Assert result.Should().NotBeNull(); result.Should().HaveCount(testScenarios.Count()); result.First().SpecificationId.Should().Be(testScenarios.First().SpecificationId); await scenariosApiClient.Received(1).GetTestScenariosBySpecificationId(Arg.Any <string>()); }
public async Task GetTestScenariosBySpecificationId_WhenGivenASpecificationIdInValidFormat_ShouldReturnFail() { // Arrange string _specificationId = "specificationId"; IEnumerable <CalculateFunding.Common.ApiClient.Scenarios.Models.TestScenario> testScenarios = new List <CalculateFunding.Common.ApiClient.Scenarios.Models.TestScenario>() { new CalculateFunding.Common.ApiClient.Scenarios.Models.TestScenario() { SpecificationId = _specificationId } }; IScenariosApiClient scenariosApiClient = Substitute.For <IScenariosApiClient>(); scenariosApiClient .GetTestScenariosBySpecificationId(Arg.Any <string>()) .Returns(new ApiResponse <IEnumerable <CalculateFunding.Common.ApiClient.Scenarios.Models.TestScenario> >(HttpStatusCode.NotFound, testScenarios)); ScenariosRepository scenariosRepository = new ScenariosRepository(scenariosApiClient, CreateCacheProvider(), CreateMapper()); string errorMessage = $"No Test Scenario found for specificationId '{_specificationId}'."; // Act Func <Task> result = async() => await scenariosRepository.GetTestScenariosBySpecificationId(_specificationId); // Assert result .Should() .Throw <RetriableException>() .WithMessage(errorMessage); await scenariosApiClient.Received(1).GetTestScenariosBySpecificationId(Arg.Any <string>()); }
public async Task GetTestScenariosBySpecificationId_WhenGivenApiResponseIsEmpty_ShouldReturnEmptyResult() { // Arrange IScenariosApiClient scenariosApiClient = Substitute.For <IScenariosApiClient>(); scenariosApiClient .GetTestScenariosBySpecificationId(Arg.Any <string>()) .Returns(new ApiResponse <IEnumerable <CalculateFunding.Common.ApiClient.Scenarios.Models.TestScenario> >(HttpStatusCode.OK, null)); ScenariosRepository scenariosRepository = new ScenariosRepository(scenariosApiClient, CreateCacheProvider(), CreateMapper()); // Act IEnumerable <TestScenario> result = await scenariosRepository.GetTestScenariosBySpecificationId("Test"); // Assert result.Should().NotBeNull(); result.Should().HaveCount(0); await scenariosApiClient.Received(1).GetTestScenariosBySpecificationId(Arg.Any <string>()); }