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))}");
        }
Example #4
0
        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}");
        }
Example #8
0
        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);
        }
Example #9
0
        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))));
        }
Example #10
0
        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);
        }
Example #11
0
        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))));
        }