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)); }