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);
        }
예제 #2
0
        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());
        }
예제 #7
0
        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);
        }
예제 #8
0
        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);
        }
예제 #10
0
        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;
 }
예제 #12
0
        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);
        }
예제 #14
0
        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);
        }