示例#1
0
        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");
        }
示例#3
0
        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);
        }
示例#4
0
        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);
        }
示例#6
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;
        }
示例#7
0
        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;
        }
示例#8
0
 static TestResultsCountsService CreateResultCountsService(
     ITestResultsSearchService testResultsService = null,
     ITestResultsRepository testResultsRepository = null,
     ILogger logger = null)
 {
     return(new TestResultsCountsService(
                testResultsService ?? CreateTestResultsSearchService(),
                testResultsRepository ?? CreateTestResultsRepository(),
                logger ?? CreateLogger()));
 }
示例#9
0
        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>();
        }
示例#13
0
        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;
        }
示例#16
0
        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>();
        }
示例#17
0
 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);
        }
示例#20
0
        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);
        }