Example #1
0
        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");
        }
Example #4
0
        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>());
        }
Example #5
0
        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");
        }
Example #6
0
        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);
        }
Example #8
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;
        }
Example #9
0
        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;
        }
Example #11
0
        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()));
 }
Example #14
0
 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;
        }
Example #18
0
        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>();
        }
Example #20
0
        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>());
        }
Example #21
0
        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));
        }
Example #23
0
        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");
        }
Example #24
0
        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");
        }