public void UpdateComparisonListCookieAddsDefaultSchoolToTheListByDefault() { var request = new Mock <HttpRequestBase>(MockBehavior.Strict); var response = new Mock <HttpResponseBase>(MockBehavior.Strict); var context = new Mock <HttpContextBase>(MockBehavior.Strict); context.SetupGet(x => x.Request).Returns(request.Object); context.SetupGet(x => x.Response).Returns(response.Object); var requestCookies = new HttpCookieCollection(); var listCookie = new ComparisonListModel(); listCookie.BenchmarkSchools = new List <BenchmarkSchoolViewModel>(); requestCookies.Add(new HttpCookie(CookieNames.COMPARISON_LIST, JsonConvert.SerializeObject(listCookie))); context.SetupGet(x => x.Request.Cookies).Returns(requestCookies); context.SetupGet(x => x.Response.Cookies).Returns(requestCookies); var rc = new RequestContext(context.Object, new RouteData()); var controller = new BaseController(); controller.ControllerContext = new ControllerContext(rc, controller); var result = controller.UpdateSchoolComparisonListCookie(CompareActions.MAKE_DEFAULT_BENCHMARK, new BenchmarkSchoolViewModel() { Urn = "123" }); Assert.AreEqual(1, controller.Response.Cookies.Count); var cookie = JsonConvert.DeserializeObject <ComparisonListModel>(controller.Response.Cookies[CookieNames.COMPARISON_LIST].Value); Assert.AreEqual(1, cookie.BenchmarkSchools.Count); Assert.AreEqual("123", cookie.BenchmarkSchools[0].Urn); }
private EstablishmentType DetectEstablishmentType(ComparisonListModel comparisonList) { var schoolTypes = comparisonList.BenchmarkSchools .Select(bs => (SchoolFinancialType)Enum.Parse(typeof(SchoolFinancialType), bs.FinancialType)).Distinct() .ToList(); EstablishmentType establishmentType; switch (schoolTypes.Count) { case 0: establishmentType = EstablishmentType.Academy; break; case 1: establishmentType = schoolTypes.First() == SchoolFinancialType.Academies ? EstablishmentType.Academy : EstablishmentType.Maintained; break; default: establishmentType = EstablishmentType.All; break; } return(establishmentType); }
private void BuildOtherSchoolsLines(ComparisonListModel comparisonList, List <ChartViewModel> benchmarkCharts, StringBuilder csv) { var otherSchools = comparisonList.BenchmarkSchools.Where(b => b.Urn != comparisonList.HomeSchoolUrn); foreach (var school in otherSchools) { var valuesLine = new StringBuilder(); var data = benchmarkCharts.First().BenchmarkData.Find(d => d.Urn == school.Urn); var term = benchmarkCharts.First().BenchmarkData.Find(d => d.Urn == school.Urn).Term; var formattedTerm = FormatTerm(term, (SchoolFinancialType)Enum.Parse(typeof(SchoolFinancialType), school.FinancialType)); valuesLine.Append($"\"{school.Name}\",{data.Urn},{formattedTerm},{data.PupilCount},{data.TeacherCount},"); foreach (var chart in benchmarkCharts.Where(bc => bc.Downloadable)) { var amount = chart.BenchmarkData.Find(d => d.Urn == school.Urn).Amount; valuesLine.Append(amount == null ? "N/A" : amount.ToString()); valuesLine.Append(","); } foreach (var col in benchmarkCharts.Where(bc => bc.TableColumns != null).SelectMany(bc => bc.TableColumns)) { var amount = col.BenchmarkData.Find(d => d.Urn == school.Urn).Amount; valuesLine.Append(amount == null ? "N/A" : amount.ToString()); valuesLine.Append(","); } csv.AppendLine(valuesLine.ToString().TrimEnd(',')); } }
public void SetupContext() { var request = new Mock <HttpRequestBase>(MockBehavior.Strict); var response = new Mock <HttpResponseBase>(MockBehavior.Strict); var context = new Mock <HttpContextBase>(MockBehavior.Strict); context.SetupGet(x => x.Request).Returns(request.Object); context.SetupGet(x => x.Response).Returns(response.Object); var requestCookies = new HttpCookieCollection(); var listCookie = new ComparisonListModel(); listCookie.HomeSchoolUrn = "123"; listCookie.HomeSchoolName = "test"; listCookie.HomeSchoolType = "test"; listCookie.HomeSchoolFinancialType = "Academies"; listCookie.BenchmarkSchools = new List <BenchmarkSchoolViewModel>() { new BenchmarkSchoolViewModel() { Urn = "123", Name = "test", FinancialType = "Academies" } }; requestCookies.Add(new HttpCookie(CookieNames.COMPARISON_LIST, JsonConvert.SerializeObject(listCookie))); context.SetupGet(x => x.Request.Cookies).Returns(requestCookies); var responseCookies = new HttpCookieCollection(); context.SetupGet(x => x.Response.Cookies).Returns(responseCookies); _rc = new RequestContext(context.Object, new RouteData()); }
protected ComparisonListModel ExtractSchoolComparisonListFromCookie() { ComparisonListModel comparisonList = new ComparisonListModel(); var cookie = Request.Cookies[CookieNames.COMPARISON_LIST]; if (cookie != null) { comparisonList = JsonConvert.DeserializeObject <ComparisonListModel>(cookie.Value); } return(comparisonList); }
public string BuildCSVContentForSchools(ComparisonListModel comparisonList, List <ChartViewModel> benchmarkCharts) { var csv = new StringBuilder(); BuildHeaderLine(benchmarkCharts, csv, EstablishmentType.Maintained); BuildHomeSchoolLine(comparisonList, benchmarkCharts, csv); BuildOtherSchoolsLines(comparisonList, benchmarkCharts, csv); return(csv.ToString()); }
public void UpdateActionReturnsCookieWhenComparisonListCleared() { var request = new Mock <HttpRequestBase>(MockBehavior.Strict); var response = new Mock <HttpResponseBase>(MockBehavior.Strict); var context = new Mock <HttpContextBase>(MockBehavior.Strict); context.SetupGet(x => x.Request).Returns(request.Object); context.SetupGet(x => x.Response).Returns(response.Object); var requestCookies = new HttpCookieCollection(); var listCookie = new ComparisonListModel(); listCookie.BenchmarkSchools = new List <BenchmarkSchoolViewModel>() { new BenchmarkSchoolViewModel() { Urn = "123", Name = "test" } }; requestCookies.Add(new HttpCookie(CookieNames.COMPARISON_LIST, JsonConvert.SerializeObject(listCookie))); context.SetupGet(x => x.Request.Cookies).Returns(requestCookies); var responseCookies = new HttpCookieCollection(); context.SetupGet(x => x.Response.Cookies).Returns(responseCookies); var rc = new RequestContext(context.Object, new RouteData()); dynamic apiResponse = new System.Dynamic.ExpandoObject(); apiResponse.Results = new object[0]; apiResponse.NumberOfResults = 0; apiResponse.Facets = string.Empty; var mockEdubaseDataService = new Mock <IContextDataService>(); dynamic serviceResponse = new System.Dynamic.ExpandoObject(); serviceResponse.Results = new object[0]; serviceResponse.NumberOfResults = 0; serviceResponse.Facets = string.Empty; var controller = new BenchmarkListController(mockEdubaseDataService.Object); controller.ControllerContext = new ControllerContext(rc, controller); var result = controller.UpdateBenchmarkBasket(null, CompareActions.CLEAR_BENCHMARK_LIST); Assert.AreEqual(1, controller.Response.Cookies.Count); var cookie = JsonConvert.DeserializeObject <ComparisonListModel>(controller.Response.Cookies[CookieNames.COMPARISON_LIST].Value); Assert.AreEqual(0, cookie.BenchmarkSchools.Count); }
public void UpdateActionReturnsCookieWhenRemovedFromComparisonList() { var request = new Mock <HttpRequestBase>(MockBehavior.Strict); var response = new Mock <HttpResponseBase>(MockBehavior.Strict); var context = new Mock <HttpContextBase>(MockBehavior.Strict); context.SetupGet(x => x.Request).Returns(request.Object); context.SetupGet(x => x.Response).Returns(response.Object); var requestCookies = new HttpCookieCollection(); var listCookie = new ComparisonListModel(); listCookie.BenchmarkSchools = new List <BenchmarkSchoolViewModel>() { new BenchmarkSchoolViewModel() { Urn = "123", Name = "test" } }; requestCookies.Add(new HttpCookie(CookieNames.COMPARISON_LIST, JsonConvert.SerializeObject(listCookie))); context.SetupGet(x => x.Request.Cookies).Returns(requestCookies); var responseCookies = new HttpCookieCollection(); context.SetupGet(x => x.Response.Cookies).Returns(responseCookies); dynamic testResult = new Microsoft.Azure.Documents.Document(); testResult.URN = "123"; _mockEdubaseDataService.Setup(m => m.GetSchoolByUrn("123")).Returns((string urn) => testResult); var rc = new RequestContext(context.Object, new RouteData()); var controller = new SchoolSearchController(_mockLaService.Object, _mockLaSearchService.Object, _mockFilterBuilder.Object, _valService, _mockEdubaseDataService.Object, _mockEdubaseSearchService.Object, _mockTrustSearchService.Object); controller.ControllerContext = new ControllerContext(rc, controller); var result = controller.UpdateBenchmarkBasket(123, CompareActions.REMOVE_FROM_COMPARISON_LIST); Assert.IsNotNull(result); Assert.AreEqual(1, controller.Response.Cookies.Count); var cookie = JsonConvert.DeserializeObject <ComparisonListModel>(controller.Response.Cookies[CookieNames.COMPARISON_LIST].Value); Assert.AreEqual(0, cookie.BenchmarkSchools.Count); }
public void UpdateComparisonListUndefaultsTheSchoolWhenRemovedFromList() { var request = new Mock <HttpRequestBase>(MockBehavior.Strict); var response = new Mock <HttpResponseBase>(MockBehavior.Strict); var context = new Mock <HttpContextBase>(MockBehavior.Strict); context.SetupGet(x => x.Request).Returns(request.Object); context.SetupGet(x => x.Response).Returns(response.Object); var requestCookies = new HttpCookieCollection(); var listCookie = new ComparisonListModel(); listCookie.HomeSchoolUrn = "123"; listCookie.BenchmarkSchools = new List <BenchmarkSchoolViewModel>() { new BenchmarkSchoolViewModel() { Urn = "123" } }; requestCookies.Add(new HttpCookie(CookieNames.COMPARISON_LIST, JsonConvert.SerializeObject(listCookie))); context.SetupGet(x => x.Request.Cookies).Returns(requestCookies); context.SetupGet(x => x.Response.Cookies).Returns(requestCookies); var rc = new RequestContext(context.Object, new RouteData()); var controller = new BaseController(); controller.ControllerContext = new ControllerContext(rc, controller); var result = controller.UpdateSchoolComparisonListCookie(CompareActions.REMOVE_FROM_COMPARISON_LIST, new BenchmarkSchoolViewModel() { Urn = "123" }); Assert.AreEqual(1, controller.Response.Cookies.Count); var cookie = JsonConvert.DeserializeObject <ComparisonListModel>(controller.Response.Cookies[CookieNames.COMPARISON_LIST].Value); Assert.AreEqual(0, cookie.BenchmarkSchools.Count); Assert.AreEqual(null, cookie.HomeSchoolUrn); }
public void AskForOverwriteStrategyIfMultipleSchoolsInComparisonList() { 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(); var listCookie = new ComparisonListModel(); listCookie.BenchmarkSchools = new List <BenchmarkSchoolViewModel>() { new BenchmarkSchoolViewModel() { Name = "test" }, new BenchmarkSchoolViewModel() { Name = "test" } }; requestCookies.Add(new HttpCookie(CookieNames.COMPARISON_LIST, JsonConvert.SerializeObject(listCookie))); context.SetupGet(x => x.Request.Cookies).Returns(requestCookies); var rc = new RequestContext(context.Object, new RouteData()); var controller = new BenchmarkCriteriaController(null, null, null, null); controller.ControllerContext = new ControllerContext(rc, controller); var response = controller.OverwriteStrategy("10000", ComparisonType.Advanced, EstablishmentType.Maintained, new BenchmarkCriteriaVM(new BenchmarkCriteria() { Gender = new [] { "Boys" } }), ComparisonArea.All, 306, "test"); Assert.IsNotNull(response); Assert.IsNotNull((response as ViewResult).Model); Assert.AreEqual("", (response as ViewResult).ViewName); }
public SchoolSearchViewModel(ComparisonListModel comparisonList, string queryKey) { base.ComparisonList = comparisonList; this.QueryKey = queryKey; }
public void DoNotAskForOverwriteStrategyIfOnlyBenchmarkSchoolInList() { var request = new Mock <HttpRequestBase>(MockBehavior.Strict); var response = new Mock <HttpResponseBase>(MockBehavior.Strict); var context = new Mock <HttpContextBase>(MockBehavior.Strict); context.SetupGet(x => x.Request).Returns(request.Object); context.SetupGet(x => x.Response).Returns(response.Object); var requestCookies = new HttpCookieCollection(); var responseCookies = new HttpCookieCollection(); var listCookie = new ComparisonListModel(); listCookie.HomeSchoolUrn = "100"; listCookie.HomeSchoolName = "home school"; listCookie.BenchmarkSchools = new List <BenchmarkSchoolViewModel>() { new BenchmarkSchoolViewModel() { Urn = "100", Name = "test" } }; requestCookies.Add(new HttpCookie(CookieNames.COMPARISON_LIST, JsonConvert.SerializeObject(listCookie))); context.SetupGet(x => x.Request.Cookies).Returns(requestCookies); context.SetupGet(x => x.Response.Cookies).Returns(responseCookies); var rc = new RequestContext(context.Object, new RouteData()); var _mockDocumentDbService = new Mock <IFinancialDataService>(); var testResult = new Document(); testResult.SetPropertyValue("URN", "321"); testResult.SetPropertyValue("School Name", "test"); Task <List <Document> > task = Task.Run(() => { return(new List <Document> { testResult }); }); _mockDocumentDbService.Setup(m => m.SearchSchoolsByCriteriaAsync(It.IsAny <BenchmarkCriteria>(), It.IsAny <EstablishmentType>())) .Returns((BenchmarkCriteria criteria, EstablishmentType estType) => task); var _mockDataCollectionManager = new Mock <IDataCollectionManager>(); _mockDataCollectionManager.Setup(m => m.GetLatestFinancialDataYearPerSchoolType(It.IsAny <SchoolFinancialType>())) .Returns(2015); var _mockEdubaseDataService = new Mock <IContextDataService>(); dynamic testEduResult = new Document(); testEduResult.URN = "100"; testEduResult.EstablishmentName = "test"; _mockEdubaseDataService.Setup(m => m.GetSchoolByUrn("100")).Returns((string urn) => testEduResult); var controller = new BenchmarkCriteriaController(null, _mockDocumentDbService.Object, _mockEdubaseDataService.Object, null); controller.ControllerContext = new ControllerContext(rc, controller); var result = controller.OverwriteStrategy("10000", ComparisonType.Advanced, EstablishmentType.Maintained, new BenchmarkCriteriaVM(new BenchmarkCriteria() { Gender = new [] { "Boys" } }), ComparisonArea.All, 306, "test"); Assert.IsNotNull(response); Assert.AreEqual("BenchmarkCharts", (result as RedirectToRouteResult).RouteValues["Controller"]); Assert.AreEqual("GenerateNewFromAdvancedCriteria", (result as RedirectToRouteResult).RouteValues["Action"]); }
public HttpCookie UpdateSchoolComparisonListCookie(string withAction, BenchmarkSchoolViewModel benchmarkSchool) { HttpCookie cookie = null; switch (withAction) { case CompareActions.ADD_TO_COMPARISON_LIST: cookie = Request.Cookies[CookieNames.COMPARISON_LIST]; if (cookie == null) { cookie = new HttpCookie(CookieNames.COMPARISON_LIST); var listCookie = new ComparisonListModel(); listCookie.BenchmarkSchools = new List <BenchmarkSchoolViewModel>() { benchmarkSchool }; cookie.Value = JsonConvert.SerializeObject(listCookie); } else { var listCookie = JsonConvert.DeserializeObject <ComparisonListModel>(cookie.Value); if ((listCookie.BenchmarkSchools.Count < ComparisonListLimit.LIMIT || listCookie.HomeSchoolUrn == benchmarkSchool.Urn) && !listCookie.BenchmarkSchools.Any(s => s.Urn == benchmarkSchool.Urn)) { listCookie.BenchmarkSchools.Add(benchmarkSchool); } cookie.Value = JsonConvert.SerializeObject(listCookie); } break; case CompareActions.REMOVE_FROM_COMPARISON_LIST: cookie = Request.Cookies[CookieNames.COMPARISON_LIST]; if (cookie != null) { var listCookie = JsonConvert.DeserializeObject <ComparisonListModel>(cookie.Value); listCookie.BenchmarkSchools.Remove(benchmarkSchool); if (listCookie.HomeSchoolUrn == benchmarkSchool.Urn) { listCookie.HomeSchoolUrn = null; listCookie.HomeSchoolName = null; listCookie.HomeSchoolType = null; listCookie.HomeSchoolFinancialType = null; } cookie.Value = JsonConvert.SerializeObject(listCookie); } break; case CompareActions.MAKE_DEFAULT_BENCHMARK: cookie = Request.Cookies[CookieNames.COMPARISON_LIST]; if (cookie == null) { cookie = new HttpCookie(CookieNames.COMPARISON_LIST); var listCookie = new ComparisonListModel(); listCookie.HomeSchoolUrn = benchmarkSchool.Urn; listCookie.HomeSchoolName = benchmarkSchool.Name; listCookie.HomeSchoolType = benchmarkSchool.Type; listCookie.HomeSchoolFinancialType = benchmarkSchool.FinancialType; listCookie.BenchmarkSchools = new List <BenchmarkSchoolViewModel>() { benchmarkSchool }; cookie.Value = JsonConvert.SerializeObject(listCookie); } else { var listCookie = JsonConvert.DeserializeObject <ComparisonListModel>(cookie.Value); listCookie.HomeSchoolUrn = benchmarkSchool.Urn; listCookie.HomeSchoolName = benchmarkSchool.Name; listCookie.HomeSchoolType = benchmarkSchool.Type; listCookie.HomeSchoolFinancialType = benchmarkSchool.FinancialType; if (listCookie.BenchmarkSchools.Count < ComparisonListLimit.LIMIT && listCookie.BenchmarkSchools.All(s => s.Urn != benchmarkSchool.Urn)) { listCookie.BenchmarkSchools.Add(benchmarkSchool); } cookie.Value = JsonConvert.SerializeObject(listCookie); } break; case CompareActions.REMOVE_DEFAULT_BENCHMARK: cookie = Request.Cookies[CookieNames.COMPARISON_LIST]; if (cookie != null) { var listCookie = JsonConvert.DeserializeObject <ComparisonListModel>(cookie.Value); listCookie.HomeSchoolUrn = null; listCookie.HomeSchoolName = null; listCookie.HomeSchoolType = null; listCookie.HomeSchoolFinancialType = null; cookie.Value = JsonConvert.SerializeObject(listCookie); } break; case CompareActions.CLEAR_BENCHMARK_LIST: cookie = Request.Cookies[CookieNames.COMPARISON_LIST]; if (cookie != null) { var listCookie = JsonConvert.DeserializeObject <ComparisonListModel>(cookie.Value); listCookie.BenchmarkSchools = new List <BenchmarkSchoolViewModel>(); cookie.Value = JsonConvert.SerializeObject(listCookie); } break; } if (cookie != null) { cookie.Expires = DateTime.MaxValue; } return(cookie); }
public void GenerateFromAdvancedCriteriaWithAddAddsTheBenchmarkSchoolToTheBenchmarkListIfNotAlreadyReturned() { var request = new Mock <HttpRequestBase>(MockBehavior.Strict); var response = new Mock <HttpResponseBase>(MockBehavior.Strict); var context = new Mock <HttpContextBase>(MockBehavior.Strict); context.SetupGet(x => x.Request).Returns(request.Object); context.SetupGet(x => x.Response).Returns(response.Object); var requestCookies = new HttpCookieCollection(); var listCookie = new ComparisonListModel(); listCookie.HomeSchoolUrn = "123"; listCookie.HomeSchoolName = "test"; listCookie.HomeSchoolType = "test"; listCookie.HomeSchoolFinancialType = "Academies"; listCookie.BenchmarkSchools = new List <BenchmarkSchoolViewModel>(); requestCookies.Add(new HttpCookie(CookieNames.COMPARISON_LIST, JsonConvert.SerializeObject(listCookie))); context.SetupGet(x => x.Request.Cookies).Returns(requestCookies); var responseCookies = new HttpCookieCollection(); context.SetupGet(x => x.Response.Cookies).Returns(responseCookies); var rc = new RequestContext(context.Object, new RouteData()); var mockDocumentDbService = new Mock <IFinancialDataService>(); var testResult = new Document(); testResult.SetPropertyValue("URN", "321"); testResult.SetPropertyValue("School Name", "test"); testResult.SetPropertyValue("FinanceType", "A"); Task <List <Document> > task = Task.Run(() => { return(new List <Document> { testResult }); }); var mockEdubaseDataService = new Mock <IContextDataService>(); dynamic testEduResult = new Document(); testEduResult.URN = "321"; testEduResult.EstablishmentName = "test"; mockEdubaseDataService.Setup(m => m.GetSchoolByUrn("321")).Returns((string urn) => testEduResult); mockDocumentDbService.Setup(m => m.SearchSchoolsByCriteriaAsync(It.IsAny <BenchmarkCriteria>(), It.IsAny <EstablishmentType>())) .Returns((BenchmarkCriteria criteria, EstablishmentType estType) => task); var mockBenchmarkChartBuilder = new Mock <IBenchmarkChartBuilder>(); mockBenchmarkChartBuilder .Setup(cb => cb.Build(It.IsAny <RevenueGroupType>(), It.IsAny <EstablishmentType>())) .Returns((RevenueGroupType revenueGroup, EstablishmentType schoolType) => new List <ChartViewModel>() { new ChartViewModel() { ChartGroup = ChartGroupType.Staff } }); var financialCalculationsService = new Mock <IFinancialCalculationsService>(); var mockComparisonService = new Mock <IComparisonService>(); Task <ComparisonResult> cTask = Task.Run(() => { return(new ComparisonResult() { BenchmarkSchools = new List <Document>() { testResult } }); }); mockComparisonService.Setup(m => m.GenerateBenchmarkListWithAdvancedComparisonAsync(It.IsAny <BenchmarkCriteria>(), It.IsAny <EstablishmentType>(), It.IsAny <Int32>())) .Returns((BenchmarkCriteria criteria, EstablishmentType estType, int basketSize) => cTask); var mockLaService = new Mock <ILocalAuthoritiesService>(); mockLaService.Setup(m => m.GetLocalAuthorities()).Returns(() => "[{\"id\": \"0\",\"LANAME\": \"Hartlepool\",\"REGION\": \"1\",\"REGIONNAME\": \"North East A\"}]"); var controller = new BenchmarkChartsController(mockBenchmarkChartBuilder.Object, mockDocumentDbService.Object, financialCalculationsService.Object, mockLaService.Object, null, mockEdubaseDataService.Object, null, mockComparisonService.Object); controller.ControllerContext = new ControllerContext(rc, controller); var result = controller.GenerateFromAdvancedCriteria(new BenchmarkCriteria(), EstablishmentType.All, null, "123", ComparisonArea.All, BenchmarkListOverwriteStrategy.Add); result.Wait(); var cookie = JsonConvert.DeserializeObject <ComparisonListModel>(controller.Response.Cookies[CookieNames.COMPARISON_LIST].Value); Assert.AreEqual(2, cookie.BenchmarkSchools.Count); Assert.AreEqual("123", cookie.BenchmarkSchools[1].Urn); }