예제 #1
0
        public void IndexTest(int numberRecords, int numberOfApprenticeship)
        {
            // Setup
            A.CallTo(() => fakeReportRepository.GetJobProfileApprenticeshipVacancyReport()).Returns(GetDummyReportData(numberRecords, numberOfApprenticeship));
            A.CallTo(() => fakeWebAppContext.RequestQueryString).Returns(query);
            A.CallTo(() => fakeCachingPolicy.Execute(fakeReportRepository.GetJobProfileApprenticeshipVacancyReport, A <CachePolicyType> ._, A <string> ._, A <string> ._)).Returns(GetDummyReportData(numberRecords, numberOfApprenticeship));
            query.Add("ctx", "something");

            // Assign
            var reportController = new ApprenticeshipVacancyReportController(fakeLoggingService, fakeReportRepository, fakeWebAppContext, fakeCachingPolicy);

            // Act
            var indexMethodCall = reportController.WithCallTo(c => c.Index());

            // Assert
            indexMethodCall
            .ShouldRenderDefaultView()
            .WithModel <JobProfileApprenticeshipVacancyReportViewModel>(vm =>
            {
                vm.ReportData.Should().HaveCount(numberRecords);
                int ii = 0;
                foreach (var r in vm.ReportData)
                {
                    if (numberOfApprenticeship > 0)
                    {
                        r.AV1Title.Should().Contain("One");
                    }
                    if (numberOfApprenticeship > 1)
                    {
                        r.AV2Title.Should().Contain("Two");
                    }

                    r.Frameworks.Should().Be($"DummyFramework_1{ii}-(LARSF_1{ii})|DummyFramework_2{ii}-(LARSF_2{ii})");
                    r.Standards.Should().Be($"DummyStandard_1{ii}-(LARS_1{ii})|DummyStandard_2{ii}-(LARS_2{ii})");
                    ii++;
                }
                vm.ExecutionTime.Should().BeGreaterThan(TimeSpan.MinValue);
            })
            .AndNoModelErrors();
            A.CallTo(() => fakeCachingPolicy.Execute(fakeReportRepository.GetJobProfileApprenticeshipVacancyReport, A <CachePolicyType> ._, A <string> ._, A <string> ._)).MustHaveHappened();
        }
        // GET: AVReport
        public ActionResult Index()
        {
            if (webAppContext.RequestQueryString?.AllKeys.Any(k => k.Equals(CacheContextQuery, StringComparison.OrdinalIgnoreCase)) == false)
            {
                var redirectUrl = webAppContext.GetCurrentQueryString(new Dictionary <string, object> {
                    [CacheContextQuery] = Guid.NewGuid()
                });
                return(Redirect(redirectUrl));
            }

            var watch        = Stopwatch.StartNew();
            var cacheContext = webAppContext.RequestQueryString?.Get(CacheContextQuery);
            var result       = cachingPolicy.Execute(reportRepository.GetJobProfileApprenticeshipVacancyReport, CachePolicyType.AbsoluteContext, nameof(ApprenticeshipVacancyReportController), cacheContext);

            watch.Stop();
            var avvm = new JobProfileApprenticeshipVacancyReportViewModel
            {
                ReportData    = CreateReportDataView(result),
                ReportName    = $"JobProfilesAVs{DateTime.Now.ToString("ddMMyyyy")}",
                ExecutionTime = watch.Elapsed,
            };

            return(View(avvm));
        }