public TestScenarioResultsPageModel(ITestScenarioResultsService testScenarioResultsService, ISpecsApiClient specsApiClient, ILogger logger, IMapper mapper)
        {
            Guard.ArgumentNotNull(testScenarioResultsService, nameof(testScenarioResultsService));
            Guard.ArgumentNotNull(mapper, nameof(mapper));
            Guard.ArgumentNotNull(specsApiClient, nameof(specsApiClient));
            Guard.ArgumentNotNull(logger, nameof(logger));

            _testScenarioResultsService = testScenarioResultsService;
            _mapper         = mapper;
            _specsApiClient = specsApiClient;
            _logger         = logger;
        }
 private static TestScenarioResultsPageModel CreatePageModel(
     ITestScenarioResultsService resultsService = null,
     ISpecsApiClient specsApiClient             = null,
     ILogger logger = null
     ,
     IMapper mapper = null)
 {
     return(new TestScenarioResultsPageModel(
                resultsService ?? CreateScenarioResultsService(),
                specsApiClient ?? CreateSpecsApiClient(),
                logger ?? CreateLogger(),
                mapper ?? MappingHelper.CreateFrontEndMapper()));
 }
        public async Task TestScenarioResults_OnGetAsync_WhenRequestedWithDefaultOptions_ThenPageIsReturned()
        {
            // Arrange
            ISpecsApiClient             specsApiClient             = CreateSpecsApiClient();
            ITestScenarioResultsService testScenarioResultsService = CreateScenarioResultsService();

            List <Reference> fundingPeriods = new List <Reference>
            {
                new Reference("1617", "2016/2017"),
                new Reference("1718", "2017/2018"),
                new Reference("1819", "2018/2019")
            };

            TestScenarioResultsPageModel pageModel = CreatePageModel(testScenarioResultsService, specsApiClient);

            specsApiClient
            .GetFundingPeriods()
            .Returns(new ApiResponse <IEnumerable <Reference> >(HttpStatusCode.OK, fundingPeriods));

            TestScenarioResultViewModel testScenarioResultViewModel = new TestScenarioResultViewModel()
            {
                Specifications = new List <ReferenceViewModel>()
                {
                    new ReferenceViewModel("spec1", "Specification 1"),
                    new ReferenceViewModel("spec2", "Specification 2"),
                    new ReferenceViewModel("spec3", "Specification 3"),
                },
                TestResults = new List <TestScenarioResultItemViewModel>()
                {
                    new TestScenarioResultItemViewModel()
                    {
                        Id              = "ts1",
                        Name            = "Test Scenario 1",
                        Passes          = 5,
                        Failures        = 10,
                        LastUpdatedDate = new DateTime(2018, 1, 5, 7, 8, 9),
                    },
                }
            };

            testScenarioResultsService
            .PerformSearch(Arg.Any <TestScenarioResultRequestViewModel>())
            .Returns(testScenarioResultViewModel);

            // Act
            IActionResult result = await pageModel.OnGetAsync(null, null, null, null);

            // Assert
            result
            .Should()
            .NotBeNull()
            .And
            .BeOfType <PageResult>();

            pageModel
            .FundingPeriods
            .Should()
            .BeEquivalentTo(new List <SelectListItem>()
            {
                new SelectListItem()
                {
                    Text  = "2016/2017",
                    Value = "1617",
                },
                new SelectListItem()
                {
                    Text  = "2017/2018",
                    Value = "1718",
                },
                new SelectListItem()
                {
                    Text  = "2018/2019",
                    Value = "1819",
                },
            });

            pageModel.SearchResults.Should().NotBeNull();

            pageModel
            .SearchResults
            .Should()
            .BeEquivalentTo(testScenarioResultViewModel);
        }
        public TestScenarioResultController(ITestScenarioResultsService testScenarioResultsService)
        {
            Guard.ArgumentNotNull(testScenarioResultsService, nameof(testScenarioResultsService));

            _testScenarioResultsService = testScenarioResultsService;
        }