public async Task EditTestScenarioPageModel_OnGetAsync_GivenSpecificationNotFoundFromRepository_ReturnsPreconditionFailed() { // Arrange ApiResponse <TestScenario> testScenario = new ApiResponse <TestScenario>(HttpStatusCode.OK, new TestScenario() { SpecificationId = SpecificationId }); ISpecsApiClient specsClient = CreateSpecsApiClient(); specsClient .GetSpecificationSummary(Arg.Is(SpecificationId)) .Returns(new ApiResponse <SpecificationSummary>(HttpStatusCode.NotFound, null)); IScenariosApiClient scenarioClient = CreateScenarioApiClient(); scenarioClient .GetCurrentTestScenarioById(Arg.Is(TestScenarioid)) .Returns(testScenario); EditTestScenarioPageModel pageModel = CreatePageModel(specsClient, scenarioClient); // Act IActionResult result = await pageModel.OnGetAsync(TestScenarioid); // Assert result .Should() .BeOfType <PreconditionFailedResult>() .Which .Value .Should() .Be("Specification not found"); }
public async Task CreateTestScenario_WhenUserDoesHaveCreateQaTestPermission_ThenActionAllowed() { // Arrange string specificationId = "abc123"; IAuthorizationHelper authorizationHelper = Substitute.For <IAuthorizationHelper>(); authorizationHelper .DoesUserHavePermission(Arg.Any <ClaimsPrincipal>(), Arg.Is(specificationId), Arg.Is(SpecificationActionTypes.CanCreateQaTests)) .Returns(true); IScenariosApiClient scenariosClient = CreateScenariosClient(); scenariosClient .CreateTestScenario(Arg.Any <CreateScenarioModel>()) .Returns(new ApiResponse <TestScenario>(HttpStatusCode.OK, new TestScenario())); ScenarioController controller = CreateScenarioController(authorizationHelper: authorizationHelper, scenariosClient: scenariosClient); // Act IActionResult result = await controller.CreateTestScenario(specificationId, new ScenarioCreateViewModel()); // Assert result.Should().BeOfType <OkObjectResult>(); }
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 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 EditTestScenarioPageModel_OnGetAsync_GivenTestScenarioNotFoundFromRepository_ReturnsNotFoundResult() { //Arrange ApiResponse <TestScenario> testScenario = new ApiResponse <TestScenario>(HttpStatusCode.NotFound); ISpecsApiClient specsClient = CreateSpecsApiClient(); IScenariosApiClient scenarioClient = CreateScenarioApiClient(); scenarioClient .GetCurrentTestScenarioById(Arg.Is(TestScenarioid)) .Returns(testScenario); EditTestScenarioPageModel pageModel = CreatePageModel(specsClient, scenarioClient); //Act IActionResult result = await pageModel.OnGetAsync(TestScenarioid); //Assert result .Should() .BeOfType <NotFoundObjectResult>() .Which .Value .Should() .Be("Test Scenario not found"); }
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 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 ScenariosRepository(IScenariosApiClient apiClient, ICacheProvider cacheProvider, IMapper mapper) { Guard.ArgumentNotNull(apiClient, nameof(apiClient)); Guard.ArgumentNotNull(cacheProvider, nameof(cacheProvider)); Guard.ArgumentNotNull(mapper, nameof(mapper)); _apiClient = apiClient; _cacheProvider = cacheProvider; _mapper = mapper; }
public ScenarioSearchService(IScenariosApiClient scenariosClient, IMapper mapper, ILogger logger) { Guard.ArgumentNotNull(scenariosClient, nameof(scenariosClient)); Guard.ArgumentNotNull(mapper, nameof(mapper)); Guard.ArgumentNotNull(logger, nameof(logger)); _scenariosApiClient = scenariosClient; _mapper = mapper; _logger = logger; }
public CreateTestScenarioPageModel(ISpecsApiClient specsClient, IScenariosApiClient scenariosApiClient, IMapper mapper, IAuthorizationHelper authorizationHelper) { Guard.ArgumentNotNull(specsClient, nameof(specsClient)); Guard.ArgumentNotNull(scenariosApiClient, nameof(scenariosApiClient)); Guard.ArgumentNotNull(mapper, nameof(mapper)); Guard.ArgumentNotNull(authorizationHelper, nameof(authorizationHelper)); _specsClient = specsClient; _scenariosClient = scenariosApiClient; _mapper = mapper; _authorizationHelper = authorizationHelper; }
public void EditTestScenarioPageModel_OnGetAsync_GivenNullProviderIdProvided_ThenArgumentNullExceptionThrown() { // Arrange ISpecsApiClient specsClient = CreateSpecsApiClient(); IScenariosApiClient scenarioClient = CreateScenarioApiClient(); EditTestScenarioPageModel pageModel = CreatePageModel(specsClient, scenarioClient); // Act - Assert Assert.ThrowsExceptionAsync <ArgumentNullException>(async() => await pageModel.OnGetAsync(null)); }
public ScenarioController(IScenariosApiClient scenariosClient, IMapper mapper, ILogger logger, IAuthorizationHelper authorizationHelper) { Guard.ArgumentNotNull(scenariosClient, nameof(scenariosClient)); Guard.ArgumentNotNull(mapper, nameof(mapper)); Guard.ArgumentNotNull(logger, nameof(logger)); Guard.ArgumentNotNull(authorizationHelper, nameof(authorizationHelper)); _scenariosClient = scenariosClient; _mapper = mapper; _logger = logger; _authorizationHelper = authorizationHelper; }
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 EditTestScenarioPageModel CreatePageModel( ISpecsApiClient specsApiClient = null, IScenariosApiClient scenariosApiClient = null, IMapper mapper = null, ILogger logger = null, IAuthorizationHelper authorizationHelper = null) { return(new EditTestScenarioPageModel( specsApiClient ?? CreateSpecsApiClient(), scenariosApiClient ?? CreateScenarioApiClient(), mapper ?? CreateMapper(), logger ?? CreateLogger(), authorizationHelper ?? TestAuthHelper.CreateAuthorizationHelperSubstitute(SpecificationActionTypes.CanEditQaTests))); }
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 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 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>()); }
public async Task OnGetAsync_GivenScenarioNotReturned_ReturnsNotFoundResult() { //Arrange ApiResponse <TestScenario> scenario = new ApiResponse <TestScenario>(HttpStatusCode.NotFound); IScenariosApiClient apiClient = CreateScenariosClient(); apiClient .GetCurrentTestScenarioById(Arg.Is(Scenarioid)) .Returns(scenario); ViewProviderTestResultsPageModel pageModel = CreatePageModel(scenariosApiClient: apiClient); //Act IActionResult result = await pageModel.OnGetAsync(Scenarioid, null, ""); //Assert result .Should() .BeAssignableTo <NotFoundResult>(); }
public async Task GetTestScenariosBySpecificationId_WhenSpeficationIdIsEmpty_ShouldThrowException() { // Arrange IScenariosApiClient scenariosApiClient = Substitute.For <IScenariosApiClient>(); ICacheProvider cacheProvider = CreateCacheProvider(); ScenariosRepository scenariosRepository = new ScenariosRepository(scenariosApiClient, cacheProvider, CreateMapper()); ArgumentNullException exception = null; // Act try { IEnumerable <TestScenario> configuredTaskAwaiter = await scenariosRepository.GetTestScenariosBySpecificationId(string.Empty); } catch (Exception e) { exception = e as ArgumentNullException; } // Assert exception.Should().NotBeNull(); exception.Should().BeOfType <ArgumentNullException>(); await scenariosApiClient.DidNotReceive().GetTestScenariosBySpecificationId(Arg.Any <string>()); }
public async Task EditTestScenarioPageModel_OnGet_WhenTestScenarioDoesNotExist_ThenNotFoundErrorReturned() { //Arrange ISpecsApiClient specsClient = CreateSpecsApiClient(); IScenariosApiClient scenarioClient = CreateScenarioApiClient(); EditTestScenarioPageModel pageModel = CreatePageModel(specsClient, scenarioClient); //Act IActionResult result = await pageModel.OnGetAsync(TestScenarioid); //Assert result.Should().NotBeNull(); result .Should() .BeOfType <NotFoundObjectResult>() .Which .Value .Should() .Be("Test Scenario not found"); }
private ScenarioController CreateScenarioController(IAuthorizationHelper authorizationHelper, IScenariosApiClient scenariosClient = null) { IMapper mapper = MappingHelper.CreateFrontEndMapper(); ILogger logger = Substitute.For <ILogger>(); return(new ScenarioController(scenariosClient ?? CreateScenariosClient(), mapper, logger, authorizationHelper)); }
public async Task EditTestScenarioPageModel_OnGetAsync_GivenValidCurrentTestScenario_ThenPageIsReturned() { // Arrange ApiResponse <TestScenario> testScenario = new ApiResponse <TestScenario>(HttpStatusCode.OK, new TestScenario() { Description = "Test Scenario for testing", Gherkin = "Given test scenario Then validate test scenario", Id = "100", Name = "Test scenario for Spec - Test Spec", SpecificationId = SpecificationId, Author = new Reference() { Id = "", Name = "" }, Version = 1 }); ISpecsApiClient specsClient = CreateSpecsApiClient(); IScenariosApiClient scenarioClient = CreateScenarioApiClient(); scenarioClient .GetCurrentTestScenarioById(Arg.Is(TestScenarioid)) .Returns(testScenario); IEnumerable <Reference> FundingStreamList = new[] { new Reference { Id = "fs1", Name = "Funding Stream Name" } }; SpecificationSummary specification = new SpecificationSummary() { Id = SpecificationId, Name = "Test Specification", FundingPeriod = new Reference("1617", "2016/2017"), Description = "Test Description", FundingStreams = FundingStreamList, }; specsClient .GetSpecificationSummary(Arg.Is(SpecificationId)) .Returns(new ApiResponse <SpecificationSummary>(HttpStatusCode.OK, specification)); EditTestScenarioPageModel pageModel = CreatePageModel(specsClient, scenarioClient); // Act IActionResult result = await pageModel.OnGetAsync(TestScenarioid); // Assert result .Should() .BeOfType <PageResult>(); pageModel.TestScenarioId.Should().Be("scenario-id"); pageModel.SpecificationId.Should().Be(SpecificationId); pageModel.SpecificationName.Should().Be("Test Specification"); pageModel.EditScenarioViewModel.Description.Should().Be("Test Scenario for testing"); pageModel.EditScenarioViewModel.Name.Should().Be("Test scenario for Spec - Test Spec"); pageModel.EditScenarioViewModel.Gherkin.Should().Be("Given test scenario Then validate test scenario"); }
public async Task EditTestScenarioPageModel_OnGetAsync_WhenUserDoesNotHaveEditQaTestPermission_ThenDoesUserHavePermissionToSaveisFalse() { // Arrange ApiResponse <TestScenario> testScenario = new ApiResponse <TestScenario>(HttpStatusCode.OK, new TestScenario() { Description = "Test Scenario for testing", Gherkin = "Given test scenario Then validate test scenario", Id = "100", Name = "Test scenario for Spec - Test Spec", SpecificationId = SpecificationId, Author = new Reference() { Id = "", Name = "" }, Version = 1 }); ISpecsApiClient specsClient = CreateSpecsApiClient(); IScenariosApiClient scenarioClient = CreateScenarioApiClient(); scenarioClient .GetCurrentTestScenarioById(Arg.Is(TestScenarioid)) .Returns(testScenario); IEnumerable <Reference> FundingStreamList = new[] { new Reference { Id = "fs1", Name = "Funding Stream Name" } }; SpecificationSummary specification = new SpecificationSummary() { Id = SpecificationId, Name = "Test Specification", FundingPeriod = new Reference("1617", "2016/2017"), Description = "Test Description", FundingStreams = FundingStreamList, }; specsClient .GetSpecificationSummary(Arg.Is(SpecificationId)) .Returns(new ApiResponse <SpecificationSummary>(HttpStatusCode.OK, specification)); IAuthorizationHelper authorizationHelper = Substitute.For <IAuthorizationHelper>(); authorizationHelper .DoesUserHavePermission(Arg.Any <ClaimsPrincipal>(), Arg.Any <ISpecificationAuthorizationEntity>(), Arg.Is(SpecificationActionTypes.CanEditQaTests)) .Returns(false); EditTestScenarioPageModel pageModel = CreatePageModel(specsClient, scenarioClient, authorizationHelper: authorizationHelper); // Act await pageModel.OnGetAsync(TestScenarioid); // Assert pageModel.DoesUserHavePermissionToSave.Should().Be("false"); }