public void IndexMethodShouldBuildVMWithTrustAndAcademiesMatFinancingTypeByDefault()
        {
            var mockTrustSearchService     = new Mock <ITrustSearchService>();
            var mockHistoricalChartBuilder = new Mock <IHistoricalChartBuilder>();
            var mockFinancialDataService   = new Mock <IFinancialDataService>();
            var mockFCService             = new Mock <IFinancialCalculationsService>();
            var mockDataCollectionManager = new Mock <IDataCollectionManager>();

            var request = new Mock <HttpRequestBase>(MockBehavior.Strict);
            var context = new Mock <HttpContextBase>(MockBehavior.Strict);

            context.SetupGet(x => x.Request).Returns(request.Object);
            var requestCookies = new HttpCookieCollection();

            context.SetupGet(x => x.Request.Cookies).Returns(requestCookies);
            var rc = new RequestContext(context.Object, new RouteData());

            var result = new ExpandoObject();

            ((dynamic)result).Results = new List <ExpandoObject>();

            mockFinancialDataService.Setup(m => m.GetAcademiesByMatNumber(It.IsAny <string>(), It.IsAny <string>()))
            .Returns(result);

            mockFinancialDataService.Setup(m => m.GetActiveTermsForMatCentral())
            .Returns(new List <string> {
                "2015"
            });

            mockFinancialDataService.Setup(m => m.GetLatestDataYearForTrusts())
            .Returns(2015);

            mockDataCollectionManager.Setup(m => m.GetLatestFinancialDataYearForTrusts())
            .Returns(2015);

            mockDataCollectionManager.Setup(m => m.GetActiveTermsForMatCentral())
            .Returns(new List <string> {
                "2015"
            });

            mockHistoricalChartBuilder
            .Setup(m => m.Build(It.IsAny <RevenueGroupType>(), It.IsAny <SchoolFinancialType>()))
            .Returns(new List <ChartViewModel>());

            var controller = new TrustController(mockHistoricalChartBuilder.Object,
                                                 mockFinancialDataService.Object,
                                                 mockFCService.Object,
                                                 mockTrustSearchService.Object,
                                                 null);

            controller.ControllerContext = new ControllerContext(rc, controller);

            controller.Index("123", "test");

            mockFinancialDataService.Verify(m => m.GetMATDataDocumentAsync("123", "2014 / 2015", MatFinancingType.TrustAndAcademies));
        }
        public async Task IndexMethodShouldBuildVMWithTrustAndAcademiesMatFinancingTypeByDefaultAsync()
        {
            var mockTrustSearchService     = new Mock <ITrustSearchService>();
            var mockHistoricalChartBuilder = new Mock <IHistoricalChartBuilder>();
            var mockFinancialDataService   = new Mock <IFinancialDataService>();
            var mockFCService             = new Mock <IFinancialCalculationsService>();
            var mockDataCollectionManager = new Mock <IDataCollectionManager>();
            var mockCookieManager         = new Mock <ISchoolBenchmarkListService>();
            var mockEdubaseDataService    = new Mock <IContextDataService>();
            var mockTrustHistoryService   = new Mock <ITrustHistoryService>();

            var request = new Mock <HttpRequestBase>(MockBehavior.Strict);
            var context = new Mock <HttpContextBase>(MockBehavior.Strict);

            context.SetupGet(x => x.Request).Returns(request.Object);
            var requestCookies = new HttpCookieCollection();

            context.SetupGet(x => x.Request.Cookies).Returns(requestCookies);
            var rc = new RequestContext(context.Object, new RouteData());

            var result = new List <AcademySummaryDataObject>()
            {
                new AcademySummaryDataObject()
            };

            var GetAcademiesByCompanyNumberAsyncTask = Task.Run(() => result);

            mockFinancialDataService.Setup(m => m.GetAcademiesByCompanyNumberAsync(It.IsAny <string>(), It.IsAny <int>()))
            .Returns(GetAcademiesByCompanyNumberAsyncTask);

            var GetActiveTermsForMatCentralAsyncTask = Task.Run(() => new List <string> {
                "2015"
            });

            mockFinancialDataService.Setup(m => m.GetActiveTermsForMatCentralAsync())
            .Returns(GetActiveTermsForMatCentralAsyncTask);

            var GetLatestDataYearPerEstabTypeAsyncTask = Task.Run(() => 2015);

            mockFinancialDataService.Setup(m => m.GetLatestDataYearPerEstabTypeAsync(EstablishmentType.MAT))
            .Returns(GetLatestDataYearPerEstabTypeAsyncTask);

            var GetLatestFinancialDataYearPerEstabTypeAsyncTask = Task.Run(() => 2015);

            mockDataCollectionManager.Setup(m => m.GetLatestFinancialDataYearPerEstabTypeAsync(EstablishmentType.MAT))
            .Returns(GetLatestFinancialDataYearPerEstabTypeAsyncTask);

            var GetActiveTermsByDataGroupAsyncTask = Task.Run(() => new List <string> {
                "2015"
            });

            mockDataCollectionManager.Setup(m => m.GetActiveTermsByDataGroupAsync(DataGroups.MATCentral))
            .Returns(GetActiveTermsByDataGroupAsyncTask);

            mockHistoricalChartBuilder
            .Setup(m => m.Build(It.IsAny <TabType>(), It.IsAny <EstablishmentType>()))
            .Returns(new List <ChartViewModel>());

            var mockCscpLookupService = new Mock <ICscpLookupService>();

            var mockGiasLookupService = new Mock <IGiasLookupService>();

            var controller = new TrustController(mockHistoricalChartBuilder.Object,
                                                 mockFinancialDataService.Object,
                                                 mockFCService.Object,
                                                 mockEdubaseDataService.Object,
                                                 null,
                                                 mockCookieManager.Object,
                                                 mockTrustHistoryService.Object,
                                                 mockGiasLookupService.Object,
                                                 mockCscpLookupService.Object);

            controller.ControllerContext = new ControllerContext(rc, controller);

            await controller.Index(123);

            mockFinancialDataService.Verify(m => m.GetTrustFinancialDataObjectByCompanyNoAsync(123, "2014 / 2015", MatFinancingType.TrustAndAcademies));
        }
        public void IndexMethodShouldRedirectToSchoolViewIfNoTrustFoundForCompanyNoButOneAcademyRelationIsFound()
        {
            var mockTrustSearchService     = new Mock <ITrustSearchService>();
            var mockHistoricalChartBuilder = new Mock <IHistoricalChartBuilder>();
            var mockFinancialDataService   = new Mock <IFinancialDataService>();
            var mockFCService             = new Mock <IFinancialCalculationsService>();
            var mockDataCollectionManager = new Mock <IDataCollectionManager>();
            var mockCookieManager         = new Mock <ISchoolBenchmarkListService>();
            var mockEdubaseDataService    = new Mock <IContextDataService>();
            var mockTrustHistoryService   = new Mock <ITrustHistoryService>();

            var request = new Mock <HttpRequestBase>(MockBehavior.Strict);
            var context = new Mock <HttpContextBase>(MockBehavior.Strict);

            context.SetupGet(x => x.Request).Returns(request.Object);
            var requestCookies = new HttpCookieCollection();

            context.SetupGet(x => x.Request.Cookies).Returns(requestCookies);
            var rc = new RequestContext(context.Object, new RouteData());

            var GetAcademiesByCompanyNumberAsyncTask = Task.Run(() => new List <AcademySummaryDataObject>()
            {
                new AcademySummaryDataObject()
            });

            mockFinancialDataService.Setup(m => m.GetAcademiesByCompanyNumberAsync(It.IsAny <string>(), It.IsAny <int>()))
            .Returns(GetAcademiesByCompanyNumberAsyncTask);

            var GetActiveTermsForMatCentralAsyncTask = Task.Run(() => new List <string> {
                "2015"
            });

            mockFinancialDataService.Setup(m => m.GetActiveTermsForMatCentralAsync())
            .Returns(GetActiveTermsForMatCentralAsyncTask);

            var GetLatestDataYearPerEstabTypeAsyncTask = Task.Run(() => 2015);

            mockFinancialDataService.Setup(m => m.GetLatestDataYearPerEstabTypeAsync(EstablishmentType.MAT))
            .Returns(GetLatestDataYearPerEstabTypeAsyncTask);

            var GetLatestFinancialDataYearPerEstabTypeAsyncTask = Task.Run(() => 2015);

            mockDataCollectionManager.Setup(m => m.GetLatestFinancialDataYearPerEstabTypeAsync(EstablishmentType.MAT))
            .Returns(GetLatestFinancialDataYearPerEstabTypeAsyncTask);

            var GetActiveTermsByDataGroupAsyncTask = Task.Run(() => new List <string> {
                "2015"
            });

            mockDataCollectionManager.Setup(m => m.GetActiveTermsByDataGroupAsync(DataGroups.MATCentral))
            .Returns(GetActiveTermsByDataGroupAsyncTask);

            mockHistoricalChartBuilder
            .Setup(m => m.Build(It.IsAny <TabType>(), It.IsAny <EstablishmentType>()))
            .Returns(new List <ChartViewModel>());

            var mockCscpLookupService = new Mock <ICscpLookupService>();

            var mockGiasLookupService = new Mock <IGiasLookupService>();

            var controller = new TrustController(mockHistoricalChartBuilder.Object,
                                                 mockFinancialDataService.Object,
                                                 mockFCService.Object,
                                                 mockEdubaseDataService.Object,
                                                 null,
                                                 mockCookieManager.Object,
                                                 mockTrustHistoryService.Object,
                                                 mockGiasLookupService.Object,
                                                 mockCscpLookupService.Object);

            controller.ControllerContext = new ControllerContext(rc, controller);

            var action = controller.Index(123);

            action.Wait();

            Assert.IsInstanceOf(typeof(RedirectToRouteResult), action.Result);
            Assert.AreEqual("School", (action.Result as RedirectToRouteResult).RouteValues["Controller"]);
            Assert.AreEqual("Detail", (action.Result as RedirectToRouteResult).RouteValues["Action"]);
        }