public void And_Location_Whitespace_Then_False( CourseProvidersViewModel model) { model.Location = " "; model.HasLocation.Should().BeFalse(); }
public void Then_The_Total_Message_Is_Created_Correctly_For_Delivery_Modes_With_Location( int totalCount, int filterTotal, bool hasFilter, string expectedMessage, Dictionary <uint, string> providerOrder, GetCourseProvidersResult result) { //arrange var selectedDeliveryModes = new List <DeliveryModeType>(); if (hasFilter) { selectedDeliveryModes.Add(DeliveryModeType.BlockRelease); } var request = new GetCourseProvidersRequest { DeliveryModes = selectedDeliveryModes }; result.TotalFiltered = filterTotal; result.Total = totalCount; //act var viewModel = new CourseProvidersViewModel(request, result, providerOrder); //assert viewModel.TotalMessage.Should().Be($"{expectedMessage} at {viewModel.Location}"); }
public void Then_The_Total_Message_Is_Created_Correctly_For_Provider_Ratings( int totalCount, int filterTotal, bool hasFilter, string expectedMessage, Dictionary <uint, string> providerOrder, GetCourseProvidersResult result) { //arrange var selectedProviderRatings = new List <ProviderRating>(); if (hasFilter) { selectedProviderRatings.Add(ProviderRating.Good); } var request = new GetCourseProvidersRequest { ProviderRatings = selectedProviderRatings }; result.TotalFiltered = filterTotal; result.Total = totalCount; //act var viewModel = new CourseProvidersViewModel(request, result, providerOrder); //assert viewModel.TotalMessage.Should().Be(expectedMessage); }
public void And_Location_Null_Then_False( CourseProvidersViewModel model) { model.Location = null; model.HasLocation.Should().BeFalse(); }
public void And_ProviderType_Not_Selected_Then_Empty_List_Returned(CourseProvidersViewModel model) { foreach (var providerRating in model.ProviderRatings) { providerRating.Selected = false; } var links = model.ClearProviderRatingLinks; links.Should().BeEmpty(); }
public void And_DeliveryMode_Not_Selected_Then_Empty_List_Returned(CourseProvidersViewModel model) { foreach (var deliveryMode in model.DeliveryModes) { deliveryMode.Selected = false; } var links = model.ClearDeliveryModeLinks; links.Should().BeEmpty(); }
public void Then_Sets_Properties(GetCourseProvidersRequest request, GetCourseProvidersResult result, Dictionary <uint, string> providerOrder) { var model = new CourseProvidersViewModel(request, result, providerOrder); model.Course.Should().BeEquivalentTo((CourseViewModel)result.Course); model.Providers.Should().BeEquivalentTo( result.Providers.Select(provider => (ProviderViewModel)provider)); model.Total.Should().Be(result.Total); model.TotalFiltered.Should().Be(result.TotalFiltered); model.Location.Should().Be(result.Location); model.ProviderOrder.Should().BeEquivalentTo(providerOrder); model.ShortlistItemCount.Should().Be(result.ShortlistItemCount); }
public void Then_If_National_Delivery_Mode_Is_Selected_Then_AtWorkplace_Is_Selected(GetCourseProvidersRequest request, GetCourseProvidersResult result, Dictionary <uint, string> providerOrder) { request.DeliveryModes = new List <DeliveryModeType> { DeliveryModeType.National }; var model = new CourseProvidersViewModel(request, result, providerOrder); model.DeliveryModes.Count(c => c.Selected).Should().Be(2); model.DeliveryModes.Where(c => c.Selected).Select(c => c.DeliveryModeType).ToList().Should() .BeEquivalentTo(new List <DeliveryModeType> { DeliveryModeType.Workplace, DeliveryModeType.National }); }
public void And_Zero_Results_And_Has_Location_And_No_Other_Filters_Then_Adds_Location_Text( Dictionary <uint, string> providerOrder, GetCourseProvidersRequest request, GetCourseProvidersResult result) { //arrange result.TotalFiltered = 0; result.Total = 0; //act var viewModel = new CourseProvidersViewModel(request, result, providerOrder); //assert viewModel.TotalMessage.Should().Be($"0 results at {viewModel.Location}"); }
public void Then_Any_Selected_Delivery_Options_And_Ratings_Are_Maintained(CourseProvidersViewModel model) { model.DeliveryModes = model.DeliveryModes.Select(c => { c.Selected = true; return(c); }).ToList(); model.ProviderRatings = model.ProviderRatings.Select(c => { c.Selected = true; return(c); }).ToList(); var actual = model.ClearLocationLink; actual.Should().StartWith($"?location=-1&providerRatings={string.Join("&providerRatings=", model.ProviderRatings.Select(c => c.ProviderRatingType))}&deliveryModes={string.Join("&deliveryModes=", model.DeliveryModes.Select(c => c.DeliveryModeType))}"); }
public void Then_Builds_Provider_Ratings(GetCourseProvidersRequest request, GetCourseProvidersResult result, Dictionary <uint, string> providerOrder) { var expectedProviderRatings = new List <ProviderRatingOptionViewModel>(); foreach (ProviderRating providerRatingType in Enum.GetValues(typeof(ProviderRating))) { expectedProviderRatings.Add(new ProviderRatingOptionViewModel { ProviderRatingType = providerRatingType, Description = providerRatingType.GetDescription(), Selected = request.ProviderRatings.Any(type => type == providerRatingType) }); } var model = new CourseProvidersViewModel(request, result, providerOrder); model.ProviderRatings.Should().BeEquivalentTo(expectedProviderRatings); }
public void Then_Builds_Delivery_Modes_Excluding_NotFound(GetCourseProvidersRequest request, GetCourseProvidersResult result, Dictionary <uint, string> providerOrder) { var expectedDeliveryModes = new List <DeliveryModeOptionViewModel>(); foreach (DeliveryModeType deliveryModeType in Enum.GetValues(typeof(DeliveryModeType))) { expectedDeliveryModes.Add(new DeliveryModeOptionViewModel { DeliveryModeType = deliveryModeType, Description = deliveryModeType.GetDescription(), Selected = request.DeliveryModes.Any(type => type == deliveryModeType) }); } var model = new CourseProvidersViewModel(request, result, providerOrder); model.DeliveryModes.Should().BeEquivalentTo(expectedDeliveryModes.Where(c => c.DeliveryModeType != DeliveryModeType.NotFound)); }
public void Then_False_When_DeliveryModes_Empty_And_ProviderRatings_Empty_And_Empty_Location( CourseProvidersViewModel model) { // Arrange model.Location = ""; foreach (var dm in model.DeliveryModes) { dm.Selected = false; } ; foreach (var pr in model.ProviderRatings) { pr.Selected = false; } ; // Act var actual = model.ShowSelectedFilters; // Assert Assert.IsFalse(actual); }
public void And_ProviderRatings_Are_Set_And_DeliveryModes_Are_Set_And_Location_Then_True( CourseProvidersViewModel model) { // Arrange model.Location = "test"; foreach (var dm in model.DeliveryModes) { dm.Selected = true; } ; foreach (var pr in model.ProviderRatings) { pr.Selected = true; } ; // Act var actual = model.ShowSelectedFilters; // Assert Assert.IsTrue(actual); }
public void And_Location_Not_Null_Then_True( CourseProvidersViewModel model) { model.HasLocation.Should().BeTrue(); }
public void And_ProviderRating_Selected_Then_Link_Returned_With_DeliveryModes_Selected(CourseProvidersViewModel model) { // Arrange foreach (var providerRating in model.ProviderRatings) { providerRating.Selected = true; } foreach (var deliveryMode in model.DeliveryModes) { deliveryMode.Selected = true; } // Act var links = model.ClearProviderRatingLinks; // Assert foreach (var providerRating in model.ProviderRatings.Where(vm => vm.Selected)) { var link = links.Single(pair => pair.Key == providerRating.Description); var selectedProviderRatings = model.ProviderRatings .Where(vm => vm.Selected && vm.ProviderRatingType != providerRating.ProviderRatingType) .Select(vm => vm.ProviderRatingType); var deliveryModeSelected = model.DeliveryModes .Where(vm => vm.Selected) .Select(vm => vm.DeliveryModeType); link.Value.Should().Be($"?location={model.Location}&deliveryModes={string.Join("&deliveryModes=", deliveryModeSelected)}&providerRatings={string.Join("&providerRatings=", selectedProviderRatings)}"); } }
public void Then_The_Location_Is_Set_To_Minus_One_And_No_Delivery_Modes(CourseProvidersViewModel model) { var actual = model.ClearLocationLink; actual.Should().StartWith("?location=-1"); }
public async Task <IActionResult> CourseProviders(GetCourseProvidersRequest request) { try { var location = CheckLocation(request.Location); var shortlistItem = _shortlistCookieService.Get(Constants.ShortlistCookieName); var result = await _mediator.Send(new GetCourseProvidersQuery { CourseId = request.Id, Location = location?.Name ?? "", Lat = location?.Lat ?? 0, Lon = location?.Lon ?? 0, DeliveryModes = request.DeliveryModes.Select(type => (Domain.Courses.DeliveryModeType)type), ProviderRatings = request.ProviderRatings.Select(rating => (Domain.Courses.ProviderRating)rating), ShortlistUserId = shortlistItem?.ShortlistUserId }); var cookieResult = new LocationCookieItem { Name = result.Location, Lat = result.LocationGeoPoint?.FirstOrDefault() ?? 0, Lon = result.LocationGeoPoint?.LastOrDefault() ?? 0 }; UpdateLocationCookie(cookieResult); if (result.Course == null) { return(RedirectToRoute(RouteNames.Error404)); } var providerList = result.Providers.ToList(); var providers = result.Providers .ToDictionary(provider => provider.ProviderId, provider => WebEncoders.Base64UrlEncode(_providerDataProtector.Protect( System.Text.Encoding.UTF8.GetBytes($"{providerList.IndexOf(provider) + 1}|{result.TotalFiltered}")))); _courseProvidersCookieStorageService.Update(Constants.ProvidersCookieName, request, 2); var courseProvidersViewModel = new CourseProvidersViewModel(request, result, providers); if (courseProvidersViewModel.Course.AfterLastStartDate) { return(RedirectToRoute(RouteNames.CourseDetails, new { request.Id })); } var removedProviderFromShortlist = string.IsNullOrEmpty(request.Removed) ? "" : HttpUtility.HtmlDecode(GetEncodedProviderName(request.Removed)); var addedProviderToShortlist = string.IsNullOrEmpty(request.Added) ? "" : HttpUtility.HtmlDecode(GetEncodedProviderName(request.Added)); courseProvidersViewModel.BannerUpdateMessage = GetProvidersBannerUpdateMessage(removedProviderFromShortlist, addedProviderToShortlist); courseProvidersViewModel.HelpFindingCourseUrl = BuildHelpFindingCourseUrl(courseProvidersViewModel.Course.Id, EntryPoint.Providers); return(View(courseProvidersViewModel)); } catch (Exception e) { _logger.LogError(e, e.Message); return(RedirectToRoute(RouteNames.Error500)); } }
public void And_DeliveryMode_Selected_And_No_ProviderRatings_Selected_Then_Link_Returned(CourseProvidersViewModel model) { foreach (var deliveryMode in model.DeliveryModes) { deliveryMode.Selected = true; } foreach (var providerRating in model.ProviderRatings) { providerRating.Selected = false; } var links = model.ClearDeliveryModeLinks; foreach (var deliveryMode in model.DeliveryModes.Where(viewModel => viewModel.Selected)) { var link = links.Single(pair => pair.Key == deliveryMode.Description); var otherSelected = model.DeliveryModes .Where(viewModel => viewModel.Selected && viewModel.DeliveryModeType != deliveryMode.DeliveryModeType) .Select(viewModel => viewModel.DeliveryModeType); link.Value.Should().Be($"?location={model.Location}&deliveryModes={string.Join("&deliveryModes=", otherSelected)}"); } }
public void Then_When_National_And_At_Workplace_Are_Filtered_Then_Removing_At_Workplace_Removes_National(CourseProvidersViewModel model) { model.DeliveryModes = new List <DeliveryModeOptionViewModel> { new DeliveryModeOptionViewModel { Selected = true, Description = DeliveryModeType.National.GetDescription(), DeliveryModeType = DeliveryModeType.National }, new DeliveryModeOptionViewModel { Selected = true, Description = DeliveryModeType.Workplace.GetDescription(), DeliveryModeType = DeliveryModeType.Workplace } }; foreach (var providerRating in model.ProviderRatings) { providerRating.Selected = false; } var links = model.ClearDeliveryModeLinks; foreach (var deliveryMode in model.DeliveryModes.Where(viewModel => viewModel.Selected)) { var link = links.Single(pair => pair.Key == deliveryMode.Description); var otherSelected = model.DeliveryModes .Where(viewModel => viewModel.Selected && viewModel.DeliveryModeType != deliveryMode.DeliveryModeType) .Select(viewModel => viewModel.DeliveryModeType); if (link.Key == DeliveryModeType.Workplace.GetDescription()) { link.Value.Should().Be($"?location={model.Location}&deliveryModes="); } else { link.Value.Should().Be($"?location={model.Location}&deliveryModes={string.Join("&deliveryModes=", otherSelected)}"); } } }