public async Task GetResultCounts_GivenModelWithScenarioIdsButBothResultsReturnNull_ReturnsOKWithNoResult() { //Arrange TestScenariosResultsCountsRequestModel model = new TestScenariosResultsCountsRequestModel { TestScenarioIds = new[] { "1", "2" } }; ILogger logger = CreateLogger(); ITestResultsSearchService searchService = CreateTestResultsSearchService(); searchService .SearchTestScenarioResultsInternal(Arg.Any <SearchModel>()) .Returns((TestScenarioSearchResults)null); TestResultsCountsService service = CreateResultCountsService(searchService, logger: logger); //Act IActionResult result = await service.GetResultCounts(model); //Assert result .Should() .BeOfType <OkObjectResult>(); OkObjectResult okResult = result as OkObjectResult; ConcurrentBag <TestScenarioResultCounts> results = okResult.Value as ConcurrentBag <TestScenarioResultCounts>; results .Count .Should() .Be(0); }
public async Task OnGetAsync_GivenResultsIsNull_ReturnsStatusCodeResult500() { //Arrange ApiResponse <TestScenario> scenario = new ApiResponse <TestScenario>(HttpStatusCode.OK, new TestScenario()); IScenariosApiClient apiClient = CreateScenariosClient(); apiClient .GetCurrentTestScenarioById(Arg.Is(Scenarioid)) .Returns(scenario); TestScenarioViewModel scenarioViewModel = new TestScenarioViewModel(); ITestResultsSearchService resultsService = CreateResultsService(); resultsService .PerformProviderTestResultsSearch(Arg.Any <SearchRequestViewModel>()) .Returns((ProviderTestsSearchResultViewModel)null); ViewProviderTestResultsPageModel pageModel = CreatePageModel(scenariosApiClient: apiClient); //Act IActionResult result = await pageModel.OnGetAsync(Scenarioid, null, ""); //Assert result .Should() .BeOfType <InternalServerErrorResult>() .Which .Value .Should() .Be("Provider Results returned null"); }
public async Task SearchProvider_GivenNullResultFromSearch_ReturnsStatusCode500() { //Arrange SearchRequestViewModel requestModel = new SearchRequestViewModel(); ITestResultsSearchService resultsSearchService = CreateResultsSearchService(); resultsSearchService .PerformProviderTestResultsSearch(Arg.Is(requestModel)) .Returns((ProviderTestsSearchResultViewModel)null); TestEngineController testEngineController = CreateController(testResultsSearchService: resultsSearchService); //Act IActionResult result = await testEngineController.SearchProviders(requestModel); //Assert result .Should() .BeAssignableTo <StatusCodeResult>(); StatusCodeResult statusCodeResult = result as StatusCodeResult; statusCodeResult .StatusCode .Should() .Be(500); }
public async Task GetResultCounts_GivenModelWithScenarioIds_ReturnsOKWithTwoResults() { //Arrange TestScenariosResultsCountsRequestModel model = new TestScenariosResultsCountsRequestModel { TestScenarioIds = new[] { "1", "2" } }; ILogger logger = CreateLogger(); TestScenarioSearchResults testScenarioSearchResults = new TestScenarioSearchResults { Results = new[] { new TestScenarioSearchResult { TestScenarioName = "Test Name 1", LastUpdatedDate = DateTimeOffset.Now }, new TestScenarioSearchResult { TestScenarioName = "Test Name 2", LastUpdatedDate = DateTimeOffset.Now } }, Facets = new[] { new Facet { Name = "testResult" } } }; ITestResultsSearchService searchService = CreateTestResultsSearchService(); searchService .SearchTestScenarioResultsInternal(Arg.Any <SearchModel>()) .Returns(testScenarioSearchResults); TestResultsCountsService service = CreateResultCountsService(searchService, logger: logger); // Act IActionResult result = await service.GetResultCounts(model); // Assert result .Should() .BeOfType <OkObjectResult>() .Which .Value .Should() .BeAssignableTo <IEnumerable <TestScenarioResultCounts> >() .Which .Should() .HaveCountGreaterThan(0); }
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 TestResultsCountsService(ITestResultsSearchService testResultsService, ITestResultsRepository testResultsRepository, ILogger logger) { Guard.ArgumentNotNull(testResultsService, nameof(testResultsService)); Guard.ArgumentNotNull(testResultsRepository, nameof(testResultsRepository)); Guard.ArgumentNotNull(logger, nameof(logger)); _testResultsService = testResultsService; _testResultsRepository = testResultsRepository; _logger = logger; }
static TestResultsCountsService CreateResultCountsService( ITestResultsSearchService testResultsService = null, ITestResultsRepository testResultsRepository = null, ILogger logger = null) { return(new TestResultsCountsService( testResultsService ?? CreateTestResultsSearchService(), testResultsRepository ?? CreateTestResultsRepository(), logger ?? CreateLogger())); }
public async Task GetResultCounts_GivenModelWithScenarioIdsButBothResultsButOnlyOneHasFacets_ReturnsOKWitOneResult() { //Arrange TestScenariosResultsCountsRequestModel model = new TestScenariosResultsCountsRequestModel { TestScenarioIds = new[] { "1", "2" } }; ILogger logger = CreateLogger(); TestScenarioSearchResults testScenarioSearchResults1 = new TestScenarioSearchResults(); TestScenarioSearchResults testScenarioSearchResults2 = new TestScenarioSearchResults { Results = new[] { new TestScenarioSearchResult { TestScenarioName = "Test Name", LastUpdatedDate = DateTimeOffset.Now } }, Facets = new[] { new Facet { Name = "testResult" } } }; ITestResultsSearchService searchService = CreateTestResultsSearchService(); searchService .SearchTestScenarioResultsInternal(Arg.Any <SearchModel>()) .Returns(testScenarioSearchResults1, testScenarioSearchResults2); TestResultsCountsService service = CreateResultCountsService(searchService, logger: logger); //Act IActionResult result = await service.GetResultCounts(model); //Assert result .Should() .BeOfType <OkObjectResult>(); OkObjectResult okResult = result as OkObjectResult; ConcurrentBag <TestScenarioResultCounts> results = okResult.Value as ConcurrentBag <TestScenarioResultCounts>; results .Count .Should() .Be(1); }
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())); }
public async Task GetResultCounts_GivenModelWithScenarioIdsButBothResultsButNoFacets_ReturnsOKWithNoResult() { //Arrange TestScenariosResultsCountsRequestModel model = new TestScenariosResultsCountsRequestModel { TestScenarioIds = new[] { "1", "2" } }; string json = JsonConvert.SerializeObject(model); byte[] byteArray = Encoding.UTF8.GetBytes(json); MemoryStream stream = new MemoryStream(byteArray); HttpRequest httpRequest = Substitute.For <HttpRequest>(); httpRequest .Body .Returns(stream); ILogger logger = CreateLogger(); TestScenarioSearchResults testScenarioSearchResults1 = new TestScenarioSearchResults(); TestScenarioSearchResults testScenarioSearchResults2 = new TestScenarioSearchResults(); ITestResultsSearchService searchService = CreateTestResultsSearchService(); searchService .SearchTestScenarioResults(Arg.Any <SearchModel>()) .Returns(testScenarioSearchResults1, testScenarioSearchResults2); TestResultsCountsService service = CreateResultCountsService(searchService, logger: logger); //Act IActionResult result = await service.GetResultCounts(httpRequest); //Assert result .Should() .BeOfType <OkObjectResult>(); OkObjectResult okResult = result as OkObjectResult; ConcurrentBag <TestScenarioResultCounts> results = okResult.Value as ConcurrentBag <TestScenarioResultCounts>; results .Count .Should() .Be(0); }
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 TestEngineController( IGherkinParserService gherkinParserService, ITestResultsSearchService testResultsSearchService, ITestEngineService testEngineService, ITestResultsCountsService testResultsCountsService, ITestResultsService testResultsService) { Guard.ArgumentNotNull(gherkinParserService, nameof(gherkinParserService)); Guard.ArgumentNotNull(testResultsSearchService, nameof(testResultsSearchService)); Guard.ArgumentNotNull(testEngineService, nameof(testEngineService)); Guard.ArgumentNotNull(testResultsCountsService, nameof(testResultsCountsService)); Guard.ArgumentNotNull(testResultsService, nameof(testResultsService)); _gherkinParserService = gherkinParserService; _testResultsSearchService = testResultsSearchService; _testEngineService = testEngineService; _testResultsCountsService = testResultsCountsService; _testResultsService = testResultsService; }
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 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 SearchProvider_GivenNResultReturnedFromSearch_ReturnsOKResult() { //Arrange SearchRequestViewModel requestModel = new SearchRequestViewModel(); ProviderTestsSearchResultViewModel viewModel = new ProviderTestsSearchResultViewModel(); ITestResultsSearchService resultsSearchService = CreateResultsSearchService(); resultsSearchService .PerformProviderTestResultsSearch(Arg.Is(requestModel)) .Returns(viewModel); TestEngineController testEngineController = CreateController(testResultsSearchService: resultsSearchService); //Act IActionResult result = await testEngineController.SearchProviders(requestModel); //Assert result .Should() .BeAssignableTo <OkObjectResult>(); }
static TestEngineController CreateController(ITestEngineApiClient testEngineApiClient = null, IMapper mapper = null, ITestResultsSearchService testResultsSearchService = null) { return(new TestEngineController(testEngineApiClient ?? CreateApiClient(), mapper ?? CreateMapper(), testResultsSearchService ?? CreateResultsSearchService())); }
public async Task GetResultCounts_GivenModelWithScenarioIds_ReturnsOKWithTwoResults() { //Arrange TestScenariosResultsCountsRequestModel model = new TestScenariosResultsCountsRequestModel { TestScenarioIds = new[] { "1", "2" } }; string json = JsonConvert.SerializeObject(model); byte[] byteArray = Encoding.UTF8.GetBytes(json); MemoryStream stream = new MemoryStream(byteArray); HttpRequest httpRequest = Substitute.For <HttpRequest>(); httpRequest .Body .Returns(stream); ILogger logger = CreateLogger(); TestScenarioSearchResults testScenarioSearchResults = new TestScenarioSearchResults { Results = new[] { new TestScenarioSearchResult { TestScenarioName = "Test Name 1", LastUpdatedDate = DateTimeOffset.Now }, new TestScenarioSearchResult { TestScenarioName = "Test Name 2", LastUpdatedDate = DateTimeOffset.Now } }, Facets = new[] { new Facet { Name = "testResult" } } }; ITestResultsSearchService searchService = CreateTestResultsSearchService(); searchService .SearchTestScenarioResults(Arg.Any <SearchModel>()) .Returns(testScenarioSearchResults); TestResultsCountsService service = CreateResultCountsService(searchService, logger: logger); // Act IActionResult result = await service.GetResultCounts(httpRequest); // Assert result .Should() .BeOfType <OkObjectResult>() .Which .Value .Should() .BeAssignableTo <IEnumerable <TestScenarioResultCounts> >() .Which .Should() .HaveCountGreaterThan(0); }
public async Task GetResultCounts_GivenModelWithScenarioIdsWithAllFacetValues_ReturnsOKeResult() { //Arrange TestScenariosResultsCountsRequestModel model = new TestScenariosResultsCountsRequestModel { TestScenarioIds = new[] { "1" } }; string json = JsonConvert.SerializeObject(model); byte[] byteArray = Encoding.UTF8.GetBytes(json); MemoryStream stream = new MemoryStream(byteArray); HttpRequest httpRequest = Substitute.For <HttpRequest>(); httpRequest .Body .Returns(stream); ILogger logger = CreateLogger(); TestScenarioSearchResults testScenarioSearchResults1 = new TestScenarioSearchResults { Results = new[] { new TestScenarioSearchResult { TestScenarioName = "Test Name", LastUpdatedDate = DateTimeOffset.Now } }, Facets = new[] { new Facet { Name = "testResult", FacetValues = new[] { new FacetValue { Count = 10, Name = "Passed" }, new FacetValue { Count = 87, Name = "Failed" }, new FacetValue { Count = 6, Name = "Ignored" } } } } }; ITestResultsSearchService searchService = CreateTestResultsSearchService(); searchService .SearchTestScenarioResults(Arg.Any <SearchModel>()) .Returns(testScenarioSearchResults1); TestResultsCountsService service = CreateResultCountsService(searchService, logger: logger); //Act IActionResult result = await service.GetResultCounts(httpRequest); //Assert result .Should() .BeOfType <OkObjectResult>(); OkObjectResult okResult = result as OkObjectResult; ConcurrentBag <TestScenarioResultCounts> results = okResult.Value as ConcurrentBag <TestScenarioResultCounts>; results .Count .Should() .Be(1); results .First() .Passed .Should() .Be(10); results .First() .Failed .Should() .Be(87); results .First() .Ignored .Should() .Be(6); }
public async Task GetResultCounts_GivenModelWithScenarioIdsWithAllFacetValues_ReturnsOKeResult() { //Arrange TestScenariosResultsCountsRequestModel model = new TestScenariosResultsCountsRequestModel { TestScenarioIds = new[] { "1" } }; ILogger logger = CreateLogger(); TestScenarioSearchResults testScenarioSearchResults1 = new TestScenarioSearchResults { Results = new[] { new TestScenarioSearchResult { TestScenarioName = "Test Name", LastUpdatedDate = DateTimeOffset.Now } }, Facets = new[] { new Facet { Name = "testResult", FacetValues = new[] { new FacetValue { Count = 10, Name = "Passed" }, new FacetValue { Count = 87, Name = "Failed" }, new FacetValue { Count = 6, Name = "Ignored" } } } } }; ITestResultsSearchService searchService = CreateTestResultsSearchService(); searchService .SearchTestScenarioResultsInternal(Arg.Any <SearchModel>()) .Returns(testScenarioSearchResults1); TestResultsCountsService service = CreateResultCountsService(searchService, logger: logger); //Act IActionResult result = await service.GetResultCounts(model); //Assert result .Should() .BeOfType <OkObjectResult>(); OkObjectResult okResult = result as OkObjectResult; ConcurrentBag <TestScenarioResultCounts> results = okResult.Value as ConcurrentBag <TestScenarioResultCounts>; results .Count .Should() .Be(1); results .First() .Passed .Should() .Be(10); results .First() .Failed .Should() .Be(87); results .First() .Ignored .Should() .Be(6); }