public async Task FilterResultReturnsSuccessWithoutPostcodeOrRegions(string mediaTypeName) { var controller = BuildDetailsController(mediaTypeName); var returnedCourseData = new CourseDetails { Title = "Maths in a unit test", Description = "This is a maths in a top class description", EntryRequirements = "Bring yourself and a brain", }; A.CallTo(() => FakeFindACoursesService.GetCourseDetails(CourseId, RunId)).Returns(returnedCourseData); var paramValues = new ParamValues { Page = 1, D = 1, OrderByValue = "StartDate", }; var result = await controller.Details(CourseId, null, RunId, "Maths", paramValues).ConfigureAwait(false); Assert.IsType <ViewResult>(result); controller.Dispose(); }
public async Task PageReturnsSuccess(string town) { // arrange var controller = BuildCourseController(MediaTypeNames.Text.Html); var paramValues = new ParamValues { Town = town, CourseType = "Online", CourseHours = "Full time", CourseStudyTime = "Daytime", }; var returnedCourseData = new CourseSearchResult { Courses = new List <Course> { new Course { Title = "Maths", CourseId = "1", AttendancePattern = "Online", Description = "This is a test description - over 220 chars" + new string(' ', 220) }, }, }; A.CallTo(() => FakeFindACoursesService.GetFilteredData(A <CourseSearchFilters> .Ignored, CourseSearchOrderBy.Relevance, 1)).Returns(returnedCourseData); // act var result = await controller.Page(paramValues, true).ConfigureAwait(false); // assert var viewResult = Assert.IsType <ViewResult>(result); var model = Assert.IsAssignableFrom <BodyViewModel>(viewResult.ViewData.Model); Assert.NotNull(model.Results); controller.Dispose(); }
public async Task GetTlevelSuccess(string mediaTypeName) { //Set Up A.CallTo(() => FakeFindACoursesService.GetTLevelDetails(A <string> .Ignored, A <string> .Ignored)).Returns(GetTestTLevel()); var controller = BuildDetailsController(mediaTypeName); var paramValues = new ParamValues { Page = 1, D = 1, OrderByValue = "StartDate", }; //Act var result = await controller.TLevelDetails(TLevelId, TLevelLocationId, "testSearchTerm", paramValues).ConfigureAwait(false); //Asserts var viewResult = Assert.IsType <ViewResult>(result); var model = Assert.IsAssignableFrom <TLevelDetailsViewModel>(viewResult.ViewData.Model); model.TlevelDetails.TLevelId.Should().Be(Guid.Parse(TLevelId)); controller.Dispose(); }
public async Task AjaxChangedCatchesException() { // arrange var controller = BuildCourseController(MediaTypeNames.Text.Html); var paramValues = new ParamValues { Town = "CV1 2WT", CourseType = "Online", CourseHours = "Full time", CourseStudyTime = "Daytime", }; var appdata = System.Text.Json.JsonSerializer.Serialize(paramValues); A.CallTo(() => FakeFindACoursesService.GetFilteredData(A <CourseSearchFilters> .Ignored, A <CourseSearchOrderBy> .Ignored, A <int> .Ignored)).Throws(new Exception()); A.CallTo(() => FakeViewHelper.RenderViewAsync(A <CourseController> .Ignored, A <string> .Ignored, A <BodyViewModel> .Ignored, A <bool> .Ignored)).Returns("<p>some markup</p>"); // act var result = await controller.AjaxChanged(appdata).ConfigureAwait(false); // assert Assert.False(string.IsNullOrWhiteSpace(result.HTML)); Assert.Equal(0, result.Count); Assert.Null(result.IsPostcode); controller.Dispose(); }
public async Task CourseControllerFilterResultsReturnsSuccess(string mediaTypeName) { var controller = BuildCourseController(mediaTypeName); var bodyViewModel = new BodyViewModel { CurrentSearchTerm = "Maths", SideBar = new SideBarViewModel { DistanceValue = "15 miles", CourseType = new FiltersListViewModel { SelectedIds = new List <string> { "Online" }, }, CourseHours = new FiltersListViewModel { SelectedIds = new List <string> { "Full time" }, }, CourseStudyTime = new FiltersListViewModel { SelectedIds = new List <string> { "Daytime" }, }, QualificationLevels = new FiltersListViewModel { SelectedIds = new List <string> { "1" }, }, }, IsTest = true, }; var returnedCourseData = new CourseSearchResult { Courses = new List <Course> { new Course { Title = "Maths", CourseId = "1", AttendancePattern = "Online", Description = "This is a test description - over 220 chars" + new string(' ', 220) }, }, }; A.CallTo(() => FakeFindACoursesService.GetFilteredData(A <CourseSearchFilters> .Ignored, CourseSearchOrderBy.Relevance, 1)).Returns(returnedCourseData); var result = await controller.FilterResults(bodyViewModel, string.Empty).ConfigureAwait(false); Assert.IsType <ViewResult>(result); controller.Dispose(); }
public async Task AjaxChangedReturnAutoLocationSuggestions(string townOrPostcode, string coordinates, bool expectAutoLocationSuggest) { // arrange var controller = BuildCourseController(MediaTypeNames.Text.Html); var paramValues = new ParamValues { Town = townOrPostcode, Coordinates = coordinates, }; var appdata = System.Text.Json.JsonSerializer.Serialize(paramValues); var returnedCourseData = new CourseSearchResult { ResultProperties = new CourseSearchResultProperties { Page = 1, TotalResultCount = 1, TotalPages = 1, }, Courses = new List <Course> { new Course { Title = "Maths", CourseId = "1", AttendancePattern = "Online", Description = "This is a test description - over 220 chars" + new string(' ', 220) }, }, }; A.CallTo(() => FakeLocationsService.GetSuggestedLocationsAsync(A <string> .Ignored)).Returns(GetTestSuggestedLocations()); A.CallTo(() => FakeFindACoursesService.GetFilteredData(A <CourseSearchFilters> .Ignored, A <CourseSearchOrderBy> .Ignored, A <int> .Ignored)).Returns(returnedCourseData); A.CallTo(() => FakeViewHelper.RenderViewAsync(A <CourseController> .Ignored, A <string> .Ignored, A <BodyViewModel> .Ignored, A <bool> .Ignored)).Returns("<p>some markup</p>"); // act var result = await controller.AjaxChanged(appdata).ConfigureAwait(false); // assert if (expectAutoLocationSuggest) { A.CallTo(() => FakeLocationsService.GetSuggestedLocationsAsync(A <string> .Ignored)).MustHaveHappenedOnceExactly(); result.AutoSuggestedTown.Should().Be("LN1 (LAN1)"); result.UsingAutoSuggestedLocation.Should().BeTrue(); result.DidYouMeanLocations.Count.Should().Be(1); } else { A.CallTo(() => FakeLocationsService.GetSuggestedLocationsAsync(A <string> .Ignored)).MustNotHaveHappened(); result.UsingAutoSuggestedLocation.Should().BeFalse(); } controller.Dispose(); }
public async Task FilterResultReturnsSuccessWithPostcodeAndRegions(string mediaTypeName) { using var controller = BuildDetailsController(mediaTypeName); var returnedCourseData = new CourseDetails { Title = "Maths in a unit test", Description = "This is a maths in a top class description", EntryRequirements = "Bring yourself and a brain", SubRegions = new List <SubRegion> { new SubRegion { SubRegionId = Guid.NewGuid().ToString(), Name = "sub-region-1", ParentRegion = new ParentRegion { RegionId = Guid.NewGuid().ToString(), Name = "region-1", }, }, new SubRegion { SubRegionId = Guid.NewGuid().ToString(), Name = "sub-region-2", ParentRegion = new ParentRegion { RegionId = Guid.NewGuid().ToString(), Name = "region-2", }, }, }, }; A.CallTo(() => FakeFindACoursesService.GetCourseDetails(CourseId, RunId)).Returns(returnedCourseData); var paramValues = new ParamValues { Page = 1, D = 1, OrderByValue = "StartDate", Town = "CV1 2WT", }; var result = await controller.Details(CourseId, null, RunId, "Maths", paramValues).ConfigureAwait(false); Assert.IsType <ViewResult>(result); }
public async Task GetTLevelDetailsReturnsFailedOnServiceErrors(string errorMesage, HttpStatusCode expectedHttpStatusCode) { //Set Up A.CallTo(() => FakeFindACoursesService.GetTLevelDetails(A <string> .Ignored, A <string> .Ignored)).Throws(new SystemException(errorMesage)); using var controller = BuildDetailsController("*/*"); var paramValues = new ParamValues(); //Act var result = await controller.TLevelDetails(CourseId, TLevelLocationId, "testSearchTerm", paramValues).ConfigureAwait(false); //Asserts var resultStatus = result as StatusCodeResult; resultStatus.StatusCode.Should().Be((int)expectedHttpStatusCode); A.CallTo(() => FakeLogService.LogError(A <string> .Ignored)).MustHaveHappenedOnceExactly(); }
public async Task CourseControllerSearchCourseThrowsException() { // arrange var controller = BuildCourseController(MediaTypeNames.Text.Html); A.CallTo(() => FakeFindACoursesService.GetFilteredData(A <CourseSearchFilters> .Ignored, A <CourseSearchOrderBy> .Ignored, A <int> .Ignored)).Throws(new Exception()); // act var result = await controller.SearchCourse("search term").ConfigureAwait(false); // assert var viewResult = Assert.IsType <ViewResult>(result); var model = Assert.IsAssignableFrom <BodyViewModel>(viewResult.ViewData.Model); Assert.Null(model.Results); controller.Dispose(); }
public async Task GetCourseDetailsReturnsFailedOnServiceErrors() { //Set Up A.CallTo(() => FakeFindACoursesService.GetCourseDetails(A <string> .Ignored, A <string> .Ignored)).Throws(new SystemException()); var controller = BuildDetailsController("*/*"); var paramValues = new ParamValues(); //Act var result = await controller.Details(CourseId, RunId, null, "testSearchTerm", paramValues).ConfigureAwait(false); //Asserts var resultStatus = result as StatusCodeResult; resultStatus.StatusCode.Should().Be((int)HttpStatusCode.FailedDependency); A.CallTo(() => FakeLogService.LogError(A <string> .Ignored)).MustHaveHappenedOnceExactly(); controller.Dispose(); }
public async Task AjaxChangedReturnsSuccessWithCorrectStates(string townOrPostcode, string coordinates, bool expectedShowDistance) { // arrange var controller = BuildCourseController(MediaTypeNames.Text.Html); var paramValues = new ParamValues { Town = townOrPostcode, Coordinates = coordinates, CourseType = "Online", CourseHours = "Full time", CourseStudyTime = "Daytime", }; var appdata = System.Text.Json.JsonSerializer.Serialize(paramValues); var returnedCourseData = new CourseSearchResult { ResultProperties = new CourseSearchResultProperties { Page = 1, TotalResultCount = 1, TotalPages = 1, }, Courses = new List <Course> { new Course { Title = "Maths", CourseId = "1", AttendancePattern = "Online", Description = "This is a test description - over 220 chars" + new string(' ', 220) }, }, }; A.CallTo(() => FakeFindACoursesService.GetFilteredData(A <CourseSearchFilters> .Ignored, A <CourseSearchOrderBy> .Ignored, A <int> .Ignored)).Returns(returnedCourseData); A.CallTo(() => FakeViewHelper.RenderViewAsync(A <CourseController> .Ignored, A <string> .Ignored, A <BodyViewModel> .Ignored, A <bool> .Ignored)).Returns("<p>some markup</p>"); // act var result = await controller.AjaxChanged(appdata).ConfigureAwait(false); // assert Assert.False(string.IsNullOrWhiteSpace(result.HTML)); Assert.Equal(returnedCourseData.Courses.ToList().Count, result.Count); result.ShowDistanceSelector.Should().Be(expectedShowDistance); controller.Dispose(); }
public async Task GetTlevelReturnsNotFound() { //Set Up const HttpStatusCode expectedHttpStatusCode = HttpStatusCode.NotFound; const TLevelDetails nullTLevelDetails = null; A.CallTo(() => FakeFindACoursesService.GetTLevelDetails(A <string> .Ignored, A <string> .Ignored)).Returns(nullTLevelDetails); using var controller = BuildDetailsController("*/*"); var paramValues = new ParamValues(); //Act var result = await controller.TLevelDetails(CourseId, TLevelLocationId, "testSearchTerm", paramValues).ConfigureAwait(false); //Asserts var resultStatus = result as StatusCodeResult; resultStatus.StatusCode.Should().Be((int)expectedHttpStatusCode); A.CallTo(() => FakeLogService.LogWarning(A <string> .Ignored)).MustHaveHappenedOnceExactly(); }
public async Task CourseControllerSearchFreeCourseReturnsNoContent() { // arrange var controller = BuildCourseController(MediaTypeNames.Text.Html); var dummyCourseSearchResult = A.Dummy <CourseSearchResult>(); A.CallTo(() => FakeFindACoursesService.GetFilteredData(A <CourseSearchFilters> ._, A <CourseSearchOrderBy> ._, A <int> ._)).Returns(dummyCourseSearchResult); // act var result = await controller.SearchFreeCourse("course").ConfigureAwait(false); // assert var viewResult = Assert.IsType <ViewResult>(result); var model = Assert.IsAssignableFrom <BodyViewModel>(viewResult.ViewData.Model); A.CallTo(() => FakeFindACoursesService.GetFilteredData(A <CourseSearchFilters> .That.Matches(x => x.CampaignCode == CourseController.FreeSearchCampaignCode), A <CourseSearchOrderBy> ._, A <int> ._)) .MustHaveHappenedOnceExactly(); Assert.NotNull(model.Results); controller.Dispose(); }
public async Task CourseControllerFilterResultsThrowsException(string mediaTypeName) { // arrange var controller = BuildCourseController(mediaTypeName); var bodyViewModel = new BodyViewModel { CurrentSearchTerm = "Maths", SideBar = new SideBarViewModel(), IsTest = true, }; A.CallTo(() => FakeFindACoursesService.GetFilteredData(A <CourseSearchFilters> .Ignored, CourseSearchOrderBy.Relevance, 1)).Throws(new Exception()); // act var result = await controller.FilterResults(bodyViewModel).ConfigureAwait(false); // assert var viewResult = Assert.IsType <ViewResult>(result); var model = Assert.IsAssignableFrom <BodyViewModel>(viewResult.ViewData.Model); Assert.Null(model.Results); controller.Dispose(); }