public void Then_If_The_List_Of_Sectors_And_Levels_Are_Empty_The_Url_Is_Constructed_Correctly(string baseUrl, string keyword) { //Arrange Act var actual = new GetCoursesApiRequest(baseUrl, keyword, new List <string>(), new List <int>()); //Assert actual.GetUrl.Should().Be($"{baseUrl}trainingcourses?keyword={keyword}"); }
public void Then_The_Get_Url_Is_Constructed_Correctly_With_Levels_And_Routes_Null(string baseUrl, string keyword, List <int> levels) { //Arrange Act var actual = new GetCoursesApiRequest(baseUrl, keyword, null, levels); //Assert actual.GetUrl.Should().Be($"{baseUrl}trainingcourses?keyword={keyword}&levels={string.Join("&levels=", levels)}"); }
public void Then_The_Get_Url_Is_Constructed_Correctly_With_Routes_And_Levels_Is_Null(string baseUrl, string keyword, List <string> sectors) { //Arrange Act var actual = new GetCoursesApiRequest(baseUrl, keyword, sectors); //Assert actual.GetUrl.Should().Be($"{baseUrl}trainingcourses?keyword={keyword}&routeIds={string.Join("&routeIds=", sectors.Select(HttpUtility.HtmlEncode))}"); }
public async Task <TrainingCourses> GetCourses(string keyword, List <string> requestRouteIds, List <int> requestLevelCodes, OrderBy orderBy, Guid?shortlistUserId) { var request = new GetCoursesApiRequest(_config.BaseUrl, keyword, requestRouteIds, requestLevelCodes, orderBy, shortlistUserId); var response = await _apiClient.Get <TrainingCourses>(request); return(response); }
public void Then_The_Get_Url_Is_Constructed_Correctly_With_OrderBy(string baseUrl) { //Arrange Act var orderBy = OrderBy.Name; var actual = new GetCoursesApiRequest(baseUrl, "", null, null, orderBy); //Assert actual.GetUrl.Should().Be($"{baseUrl}trainingcourses?keyword=&orderby={orderBy}"); }
public void Then_The_Get_Url_Is_Constructed_Correctly_With_Levels_And_Routes_And_OrderBy_And_ShortlistUserId(string baseUrl, string keyword, List <string> sectors, List <int> levels, Guid shortlistUserId) { //Arrange Act var orderBy = OrderBy.Relevance; var actual = new GetCoursesApiRequest(baseUrl, keyword, sectors, levels, orderBy, shortlistUserId); //Assert actual.GetUrl.Should().Be($"{baseUrl}trainingcourses?keyword={keyword}&orderby={orderBy}&routeIds={string.Join("&routeIds=", sectors.Select(HttpUtility.HtmlEncode))}&levels={string.Join("&levels=", levels)}&shortlistUserId={shortlistUserId}"); }
public void Then_ShortlistId_Is_Not_Added_If_None(string baseUrl, string keyword) { //Arrange Act var orderBy = OrderBy.None; var actual = new GetCoursesApiRequest(baseUrl, keyword, null, null, orderBy, null); //Assert actual.GetUrl.Should().NotContain("shortlistUserId"); actual.GetUrl.Should().Be($"{baseUrl}trainingcourses?keyword={keyword}"); }
private async Task <IDictionary <string, Course> > CacheCoursesFromApi() { var apiRequest = new GetCoursesApiRequest(_options.Url); var result = await _apiClient.Get <GetCoursesApiResponse>(apiRequest); var coursesLookUp = result.Courses.ToDictionary(course => course.Id); await _cacheService.SaveToCache(nameof(CourseService), coursesLookUp, 24); return(coursesLookUp); }
public async Task Then_The_Api_Client_Is_Called_With_The_Request( [Frozen] Mock <IOptions <FindApprenticeshipTrainingApi> > config, [Frozen] Mock <IApiClient> apiClient, CourseService courseService) { //Arrange var courseApiRequest = new GetCoursesApiRequest(config.Object.Value.BaseUrl, null); //Act await courseService.GetCourses(null, null, null, OrderBy.None, null); //Assert apiClient.Verify(x => x.Get <TrainingCourses>( It.Is <GetCoursesApiRequest>(request => request.GetUrl.Equals(courseApiRequest.GetUrl)))); }
public async Task <CourseList> GetCourses() { var cachedCourseList = await _cacheStorageService.RetrieveFromCache <CourseList>(nameof(CourseList)); if (cachedCourseList != default) { return(cachedCourseList); } var apiRequest = new GetCoursesApiRequest(); var courseList = await _apiClient.Get <CourseList>(apiRequest); await _cacheStorageService.SaveToCache(nameof(CourseList), courseList, CacheDurationInHours); return(courseList); }
public async Task Then_The_Keyword_And_Levels_Are_Added_To_The_Request( string keyword, List <int> levels, [Frozen] Mock <IOptions <FindApprenticeshipTrainingApi> > config, [Frozen] Mock <IApiClient> apiClient, CourseService courseService) { //Arrange var coursesApiRequest = new GetCoursesApiRequest(config.Object.Value.BaseUrl, keyword, null, levels); //Act await courseService.GetCourses(keyword, null, levels, OrderBy.None, null); //Assert apiClient.Verify(x => x.Get <TrainingCourses>(It.Is <GetCoursesApiRequest>(request => request.Keyword.Equals(coursesApiRequest.Keyword) && request.Levels.Equals(coursesApiRequest.Levels)))); }