public ChoosePageModel( ISpecsApiClient specsApiClient, ICalculationsApiClient calcsClient, IResultsApiClient resultsClient, ITestEngineApiClient testEngineClient, IMapper mapper, IAuthorizationHelper authorizationHelper, IFeatureToggle featureToggle) { Guard.ArgumentNotNull(specsApiClient, nameof(specsApiClient)); Guard.ArgumentNotNull(calcsClient, nameof(calcsClient)); Guard.ArgumentNotNull(resultsClient, nameof(resultsClient)); Guard.ArgumentNotNull(testEngineClient, nameof(testEngineClient)); Guard.ArgumentNotNull(mapper, nameof(mapper)); Guard.ArgumentNotNull(authorizationHelper, nameof(authorizationHelper)); Guard.ArgumentNotNull(featureToggle, nameof(featureToggle)); _specsClient = specsApiClient; _calcsClient = calcsClient; _resultsClient = resultsClient; _testEngineClient = testEngineClient; _mapper = mapper; _authorizationHelper = authorizationHelper; _featureToggle = featureToggle; }
public void CompileTestScenario_GivenResultFailedThrowsInvalidOperationException() { //Arrange const string specificationId = "test-spec"; ScenarioCompileViewModel viewModel = new ScenarioCompileViewModel(); ScenarioCompileModel compileModel = new ScenarioCompileModel(); IMapper mapper = CreateMapper(); mapper .Map <ScenarioCompileModel>(Arg.Is(viewModel)) .Returns(compileModel); ApiResponse <IEnumerable <ScenarioCompileError> > result = new ApiResponse <IEnumerable <ScenarioCompileError> >(HttpStatusCode.BadRequest); ITestEngineApiClient apiClient = CreateApiClient(); apiClient .CompileScenario(Arg.Is(compileModel)) .Returns(result); TestEngineController controller = CreateController(mapper: mapper, testEngineApiClient: apiClient); //Act Func <Task> test = async() => await controller.CompileTestScenario(specificationId, viewModel); //Assert test .Should() .ThrowExactly <InvalidOperationException>(); }
public async Task CompileTestScenario_GivenResultFromApiIsOK_ReturnsOKObjectResult() { //Arrange const string specificationId = "test-spec"; ScenarioCompileViewModel viewModel = new ScenarioCompileViewModel(); ScenarioCompileModel compileModel = new ScenarioCompileModel(); IMapper mapper = CreateMapper(); mapper .Map <ScenarioCompileModel>(Arg.Is(viewModel)) .Returns(compileModel); ApiResponse <IEnumerable <ScenarioCompileError> > result = new ApiResponse <IEnumerable <ScenarioCompileError> >(HttpStatusCode.OK); ITestEngineApiClient apiClient = CreateApiClient(); apiClient .CompileScenario(Arg.Is(compileModel)) .Returns(result); TestEngineController controller = CreateController(mapper: mapper, testEngineApiClient: apiClient); //Act IActionResult actionResult = await controller.CompileTestScenario(specificationId, viewModel); //Assert actionResult .Should() .BeAssignableTo <OkObjectResult>(); }
public void TestScenarioResultsService_PerformSearch_WhenRowCountsApiCallContentIsNull_ThenExceptionThrown() { // Arrange IScenarioSearchService searchService = CreateScenarioSearchService(); ISpecificationsApiClient specsApiClient = CreateSpecsApiClient(); ITestEngineApiClient testEngineApiClient = CreateTestEngineApiClient(); ILogger logger = CreateLogger(); TestScenarioResultRequestViewModel resultRequestViewModel = new TestScenarioResultRequestViewModel() { SearchTerm = "", PageNumber = 1, FundingPeriodId = null, SpecificationId = null, }; TestScenarioResultsService testScenarioResultsService = CreateService(searchService, specsApiClient, testEngineApiClient, logger: logger); searchService.PerformSearch(Arg.Any <SearchRequestViewModel>()) .Returns(new ScenarioSearchResultViewModel() { Scenarios = new List <ScenarioSearchResultItemViewModel>() { new ScenarioSearchResultItemViewModel() { Id = "s1", Name = "S1", }, new ScenarioSearchResultItemViewModel() { Id = "s2", Name = "S2", }, } }); List <SpecificationSummary> specifications = CreateSpecifications(); specsApiClient .GetSpecificationSummaries() .Returns(new ApiResponse <IEnumerable <SpecificationSummary> >(HttpStatusCode.OK, specifications)); testEngineApiClient .GetTestResultCounts(Arg.Any <TestScenarioResultCountsRequestModel>()) .Returns(new ApiResponse <IEnumerable <TestScenarioResultCounts> >(HttpStatusCode.OK, null)); // Act Func <Task> action = async() => await testScenarioResultsService.PerformSearch(resultRequestViewModel); // Assert action. Should() .ThrowExactly <InvalidOperationException>() .WithMessage("Row counts api request failed with null content"); logger .Received(1) .Warning(Arg.Is("Row counts api request failed with null content")); }
public async Task OnGetAsync_GivenCountTaskReturnsNoItems_ThenCoverageIsSetCorrectly() { //Arrange ApiResponse <TestScenario> scenario = new ApiResponse <TestScenario>(HttpStatusCode.OK, new TestScenario()); IScenariosApiClient apiClient = CreateScenariosClient(); apiClient .GetCurrentTestScenarioById(Arg.Is(Scenarioid)) .Returns(scenario); ProviderTestsSearchResultViewModel viewModel = new ProviderTestsSearchResultViewModel(); ITestResultsSearchService resultsService = CreateResultsService(); resultsService .PerformProviderTestResultsSearch(Arg.Any <SearchRequestViewModel>()) .Returns(viewModel); ITestEngineApiClient testEngineApiClient = CreateTestEngineClient(); testEngineApiClient .GetTestResultCounts(Arg.Any <TestScenarioResultCountsRequestModel>()) .Returns(new ApiResponse <IEnumerable <TestScenarioResultCounts> >(HttpStatusCode.OK, Enumerable.Empty <TestScenarioResultCounts>())); ISpecsApiClient specsApiClient = CreateSpecsClient(); specsApiClient .GetSpecificationSummary(Arg.Any <string>()) .Returns(new ApiResponse <Clients.SpecsClient.Models.SpecificationSummary>(HttpStatusCode.OK, new Clients.SpecsClient.Models.SpecificationSummary())); ViewProviderTestResultsPageModel pageModel = CreatePageModel( resultsService, testEngineApiClient, scenariosApiClient: apiClient, specsApiClient: specsApiClient); //Act IActionResult result = await pageModel.OnGetAsync(Scenarioid, null, ""); //Assert result .Should() .BeOfType <PageResult>() .Which .Should() .NotBeNull(); await testEngineApiClient .Received(1) .GetTestResultCounts(Arg.Any <TestScenarioResultCountsRequestModel>()); pageModel .TestCoverage .Should() .Be(0); }
public TestEngineController(ITestEngineApiClient testEngineApiClient, IMapper mapper, ITestResultsSearchService testResultsSearchService) { Guard.ArgumentNotNull(testEngineApiClient, nameof(testEngineApiClient)); Guard.ArgumentNotNull(mapper, nameof(mapper)); Guard.ArgumentNotNull(testResultsSearchService, nameof(testResultsSearchService)); _testEngineApiClient = testEngineApiClient; _mapper = mapper; _testResultsSearchService = testResultsSearchService; }
public TestScenarioSearchService(ITestEngineApiClient testEngineApiClient, IMapper mapper, ILogger logger) { Guard.ArgumentNotNull(testEngineApiClient, nameof(testEngineApiClient)); Guard.ArgumentNotNull(mapper, nameof(mapper)); Guard.ArgumentNotNull(logger, nameof(logger)); _testEngineApiClient = testEngineApiClient; _mapper = mapper; _logger = logger; }
static ViewProviderTestResultsPageModel CreatePageModel( ITestResultsSearchService testResultsSearchService = null, ITestEngineApiClient testEngineApiClient = null, IScenariosApiClient scenariosApiClient = null, ISpecsApiClient specsApiClient = null, IMapper mapper = null) { return(new ViewProviderTestResultsPageModel( testResultsSearchService ?? CreateResultsService(), testEngineApiClient ?? CreateTestEngineClient(), scenariosApiClient ?? CreateScenariosClient(), specsApiClient ?? CreateSpecsClient(), mapper ?? CreateMapper())); }
private static TestScenarioResultsService CreateService( IScenarioSearchService scenarioSearchService = null, ISpecificationsApiClient specsApiClient = null, ITestEngineApiClient testEngineApiClient = null, IMapper mapper = null, ILogger logger = null) { return(new TestScenarioResultsService( scenarioSearchService ?? CreateScenarioSearchService(), specsApiClient ?? CreateSpecsApiClient(), testEngineApiClient ?? CreateTestEngineApiClient(), mapper ?? MappingHelper.CreateFrontEndMapper(), logger ?? CreateLogger())); }
public TestScenarioResultsService(IScenarioSearchService scenariosApiClient, ISpecificationsApiClient specsApiClient, ITestEngineApiClient testEngineApiClient, IMapper mapper, ILogger logger) { Guard.ArgumentNotNull(scenariosApiClient, nameof(scenariosApiClient)); Guard.ArgumentNotNull(specsApiClient, nameof(specsApiClient)); Guard.ArgumentNotNull(testEngineApiClient, nameof(testEngineApiClient)); Guard.ArgumentNotNull(mapper, nameof(mapper)); Guard.ArgumentNotNull(logger, nameof(logger)); _scenariosSearchService = scenariosApiClient; _specsClient = specsApiClient; _testEngineClient = testEngineApiClient; _mapper = mapper; _logger = logger; }
public async Task OnGetAsync_GivenResultsReturned_ReturnsPage() { //Arrange ApiResponse <TestScenario> scenario = new ApiResponse <TestScenario>(HttpStatusCode.OK, new TestScenario()); IScenariosApiClient scenariosClient = CreateScenariosClient(); scenariosClient .GetCurrentTestScenarioById(Arg.Is(Scenarioid)) .Returns(scenario); TestScenarioViewModel scenarioViewModel = new TestScenarioViewModel(); ProviderTestsSearchResultViewModel viewModel = new ProviderTestsSearchResultViewModel(); ITestResultsSearchService resultsService = CreateResultsService(); resultsService .PerformProviderTestResultsSearch(Arg.Any <SearchRequestViewModel>()) .Returns(viewModel); ITestEngineApiClient testEngineClient = CreateTestEngineClient(); List <TestScenarioResultCounts> countResults = new List <TestScenarioResultCounts>(); testEngineClient .GetTestResultCounts(Arg.Is <TestScenarioResultCountsRequestModel>(c => c.TestScenarioIds.Count() == 1 && c.TestScenarioIds.First() == Scenarioid)) .Returns(new ApiResponse <IEnumerable <TestScenarioResultCounts> >(HttpStatusCode.OK, countResults)); ISpecsApiClient specsApiClient = CreateSpecsClient(); specsApiClient .GetSpecificationSummary(Arg.Any <string>()) .Returns(new ApiResponse <Clients.SpecsClient.Models.SpecificationSummary>(HttpStatusCode.OK, new Clients.SpecsClient.Models.SpecificationSummary())); ViewProviderTestResultsPageModel pageModel = CreatePageModel(resultsService, testEngineClient, scenariosClient, specsApiClient: specsApiClient); //Act IActionResult result = await pageModel.OnGetAsync(Scenarioid, null, ""); //Assert result .Should() .BeAssignableTo <PageResult>(); }
public async Task TestScenarioResultsService_PerformSearch_WhenGetAllSpecificationsLookupIsNull_ThenExceptionThrown() { // Arrange IScenarioSearchService searchService = CreateScenarioSearchService(); ISpecificationsApiClient specsApiClient = CreateSpecsApiClient(); ITestEngineApiClient testEngineApiClient = CreateTestEngineApiClient(); ILogger logger = CreateLogger(); TestScenarioResultRequestViewModel resultRequestViewModel = new TestScenarioResultRequestViewModel() { SearchTerm = "", PageNumber = 1, FundingPeriodId = null, SpecificationId = null, }; TestScenarioResultsService testScenarioResultsService = CreateService(searchService, specsApiClient, testEngineApiClient, logger: logger); searchService.PerformSearch(Arg.Any <SearchRequestViewModel>()) .Returns(new ScenarioSearchResultViewModel()); List <SpecificationSummary> specifications = CreateSpecifications(); specsApiClient .GetSpecificationSummaries() .Returns((ApiResponse <IEnumerable <SpecificationSummary> >)null); // Act Func <Task> action = async() => await testScenarioResultsService.PerformSearch(resultRequestViewModel); // Assert action. Should() .ThrowExactly <InvalidOperationException>() .WithMessage("Specifications API Response was null"); logger .Received(1) .Warning(Arg.Is("Specifications API Response was null")); await specsApiClient .Received(1) .GetSpecificationSummaries(); }
public void TestScenarioResultsService_PerformSearch_WhenTestScenariosSearchResultsIsNull_ThenExceptionThrown() { // Arrange IScenarioSearchService searchService = CreateScenarioSearchService(); ISpecificationsApiClient specsApiClient = CreateSpecsApiClient(); ITestEngineApiClient testEngineApiClient = CreateTestEngineApiClient(); ILogger logger = CreateLogger(); string specificationId = "spec1"; TestScenarioResultsService testScenarioResultsService = CreateService(searchService, specsApiClient, testEngineApiClient, logger: logger); TestScenarioResultRequestViewModel resultRequestViewModel = new TestScenarioResultRequestViewModel() { SearchTerm = "", PageNumber = 1, FundingPeriodId = null, SpecificationId = specificationId, }; ScenarioSearchResultViewModel scenarioSearchResultViewModel = null; searchService.PerformSearch(Arg.Is <SearchRequestViewModel>(s => s.SearchTerm == resultRequestViewModel.SearchTerm)) .Returns(scenarioSearchResultViewModel); List <SpecificationSummary> specifications = CreateSpecifications(); specsApiClient .GetSpecificationSummaries() .Returns(new ApiResponse <IEnumerable <SpecificationSummary> >(HttpStatusCode.OK, specifications.AsEnumerable())); // Act Func <Task> action = async() => await testScenarioResultsService.PerformSearch(resultRequestViewModel); // Assert action. Should() .ThrowExactly <InvalidOperationException>() .WithMessage("Scenario Search Results response was null"); logger .Received(1) .Warning(Arg.Is <string>("Scenario Search Results response was null")); }
public ViewProviderTestResultsPageModel( ITestResultsSearchService testResultsSearchService, ITestEngineApiClient testEngineApiClient, IScenariosApiClient scenariosApiClient, ISpecsApiClient specsApiClient, IMapper mapper) { Guard.ArgumentNotNull(testResultsSearchService, nameof(testResultsSearchService)); Guard.ArgumentNotNull(testEngineApiClient, nameof(testEngineApiClient)); Guard.ArgumentNotNull(scenariosApiClient, nameof(scenariosApiClient)); Guard.ArgumentNotNull(specsApiClient, nameof(specsApiClient)); Guard.ArgumentNotNull(mapper, nameof(mapper)); _testResultsSearchService = testResultsSearchService; _testEngineClient = testEngineApiClient; _scenariosApiClient = scenariosApiClient; _specsClient = specsApiClient; _mapper = mapper; }
public async Task OnGetAsync_GivenCountTaskReturnsNullContent_ThenErrorIsReturned() { //Arrange ApiResponse <TestScenario> scenario = new ApiResponse <TestScenario>(HttpStatusCode.OK, new TestScenario()); IScenariosApiClient apiClient = CreateScenariosClient(); apiClient .GetCurrentTestScenarioById(Arg.Is(Scenarioid)) .Returns(scenario); ProviderTestsSearchResultViewModel viewModel = new ProviderTestsSearchResultViewModel(); ITestResultsSearchService resultsService = CreateResultsService(); resultsService .PerformProviderTestResultsSearch(Arg.Any <SearchRequestViewModel>()) .Returns(viewModel); ITestEngineApiClient testEngineApiClient = CreateTestEngineClient(); testEngineApiClient .GetTestResultCounts(Arg.Any <TestScenarioResultCountsRequestModel>()) .Returns(new ApiResponse <IEnumerable <TestScenarioResultCounts> >(HttpStatusCode.OK, null)); ViewProviderTestResultsPageModel pageModel = CreatePageModel(resultsService, testEngineApiClient, scenariosApiClient: apiClient); //Act IActionResult result = await pageModel.OnGetAsync(Scenarioid, null, ""); //Assert result .Should() .BeOfType <InternalServerErrorResult>() .Which .Value .Should() .Be("Count Task result content was null"); await testEngineApiClient .Received(1) .GetTestResultCounts(Arg.Any <TestScenarioResultCountsRequestModel>()); }
public void TestScenarioResultsService_PerformSearch_WhenGetAllSpecificationsLookupResponseIsNotOk_ThenExceptionThrown() { // Arrange IScenarioSearchService searchService = CreateScenarioSearchService(); ISpecificationsApiClient specsApiClient = CreateSpecsApiClient(); ITestEngineApiClient testEngineApiClient = CreateTestEngineApiClient(); ILogger logger = CreateLogger(); TestScenarioResultRequestViewModel resultRequestViewModel = new TestScenarioResultRequestViewModel() { SearchTerm = "", PageNumber = 1, FundingPeriodId = null, SpecificationId = null, }; TestScenarioResultsService testScenarioResultsService = CreateService(searchService, specsApiClient, testEngineApiClient, logger: logger); searchService.PerformSearch(Arg.Any <SearchRequestViewModel>()) .Returns(new ScenarioSearchResultViewModel()); specsApiClient .GetSpecificationSummaries() .Returns(new ApiResponse <IEnumerable <SpecificationSummary> >(HttpStatusCode.InternalServerError, null)); // Act Func <Task> action = async() => await testScenarioResultsService.PerformSearch(resultRequestViewModel); // Assert action. Should() .ThrowExactly <InvalidOperationException>() .WithMessage("Specifications API Response content did not return OK, but instead 'InternalServerError'"); logger .Received(1) .Warning(Arg.Is("Specifications API Response content did not return OK, but instead {specificationsApiResponse.StatusCode}"), Arg.Is(HttpStatusCode.InternalServerError)); }
public async Task TestScenarioResultsService_PerformSearch_WhenTestScenariosExist_ThenResultsAreReturned() { // Arrange IScenarioSearchService searchService = CreateScenarioSearchService(); ISpecificationsApiClient specsApiClient = CreateSpecsApiClient(); ITestEngineApiClient testEngineApiClient = CreateTestEngineApiClient(); TestScenarioResultsService testScenarioResultsService = CreateService(searchService, specsApiClient, testEngineApiClient); TestScenarioResultRequestViewModel resultRequestViewModel = new TestScenarioResultRequestViewModel() { SearchTerm = "", PageNumber = 1, FundingPeriodId = null, SpecificationId = null, }; ScenarioSearchResultViewModel scenarioSearchResultViewModel = new ScenarioSearchResultViewModel() { CurrentPage = 1, TotalResults = 1, StartItemNumber = 1, EndItemNumber = 1, Scenarios = new List <ScenarioSearchResultItemViewModel>() { new ScenarioSearchResultItemViewModel() { Id = "ts1", Name = "Test Scenario 1", FundingPeriodName = "2018/2019", Status = "Passed", SpecificationName = "Specifcation 1", LastUpdatedDate = new DateTime(2018, 1, 5, 7, 8, 9), } } }; searchService.PerformSearch(Arg.Is <SearchRequestViewModel>(s => s.SearchTerm == resultRequestViewModel.SearchTerm)) .Returns(scenarioSearchResultViewModel); List <SpecificationSummary> specifications = CreateSpecifications(); specsApiClient .GetSpecificationSummaries() .Returns(new ApiResponse <IEnumerable <SpecificationSummary> >(HttpStatusCode.OK, specifications.AsEnumerable())); List <TestScenarioResultCounts> testScenarioResultCounts = new List <TestScenarioResultCounts>(); testScenarioResultCounts.Add(new TestScenarioResultCounts() { Passed = 5, Failed = 10, Ignored = 50, LastUpdatedDate = new DateTime(2018, 10, 5, 7, 8, 9), TestScenarioId = "ts1", TestScenarioName = "Test Scenario 1", }); testEngineApiClient .GetTestResultCounts(Arg.Any <TestScenarioResultCountsRequestModel>()) .Returns(new ApiResponse <IEnumerable <TestScenarioResultCounts> >(HttpStatusCode.OK, testScenarioResultCounts)); // Act TestScenarioResultViewModel resultViewModel = await testScenarioResultsService.PerformSearch(resultRequestViewModel); // Assert resultViewModel.Should().NotBeNull(); TestScenarioResultViewModel expectedResult = new TestScenarioResultViewModel() { CurrentPage = 1, EndItemNumber = 1, Facets = new List <SearchFacetViewModel>(), FundingPeriodId = null, Specifications = new List <ReferenceViewModel>() { new ReferenceViewModel("spec1", "Specification 1"), new ReferenceViewModel("spec2", "Specification 2"), new ReferenceViewModel("spec3", "Specification for 2018/2019"), }, StartItemNumber = 1, TotalResults = 1, TestResults = new List <TestScenarioResultItemViewModel>() { new TestScenarioResultItemViewModel() { Id = "ts1", Name = "Test Scenario 1", Passes = 5, Failures = 10, Ignored = 50, LastUpdatedDate = new DateTime(2018, 1, 5, 7, 8, 9), } } }; resultViewModel.Should().BeEquivalentTo(expectedResult); await specsApiClient .Received(1) .GetSpecificationSummaries(); }
static TestEngineController CreateController(ITestEngineApiClient testEngineApiClient = null, IMapper mapper = null, ITestResultsSearchService testResultsSearchService = null) { return(new TestEngineController(testEngineApiClient ?? CreateApiClient(), mapper ?? CreateMapper(), testResultsSearchService ?? CreateResultsSearchService())); }