Example #1
0
        public async Task <List <ApprenticeshipCourse> > Handle(RefreshCourses message)
        {
            if (message.RequestTime < DateTime.Now.AddMinutes(-5))
            {
                _logger.Warn($"Received invalid request to get courses. Reason: Request was generated more than 5 minutes ago. Request time: {message.RequestTime}, current time: {DateTime.Now}.");
                return(new List <ApprenticeshipCourse>());
            }
            var courses = new List <ApprenticeshipCourse>();

            if (message.CourseType.HasFlag(CourseType.Standards))
            {
                _logger.Debug($"Getting list of standard courses. RefrechTicks: {message.RequestTime.Ticks}");
                var standards = await _standardsService.GetCourses();

                courses.AddRange(standards);
            }

            if (message.CourseType.HasFlag(CourseType.Frameworks))
            {
                _logger.Debug($"Getting list of framework courses. RefrechTicks: {message.RequestTime.Ticks}");
                var frameworks = await _frameworksService.GetCourses();

                courses.AddRange(frameworks);
            }

            return(courses);
        }
Example #2
0
 public static async Task Run([QueueTrigger(QueueNames.GetCourses)] RefreshCourses message,
                              TraceWriter log,
                              [Queue(QueueNames.StoreCourse)] ICollector <ApprenticeshipCourse> storeCourses,
                              ExecutionContext executionContext)
 {
     await FunctionRunner.Run <GetCoursesFunction>(log, executionContext, async (container, logger) =>
     {
         logger.Debug("Starting GetCoursesFunction Function.");
         var handler = container.GetInstance <GetCoursesHandler>();
         var courses = await handler.Handle(message);
         courses.ForEach(storeCourses.Add);
         log.Info($"Finished getting courses. Got {courses.Count} courses.");
     });
 }
        public async Task RefreshCoursesWhenMaxErrorsOccur()
        {
            // Arrange
            var expectedModels = A.CollectionOfFake <SimpleJobProfileModel>(AbortAfterErrorCount * 2);
            const HttpStatusCode expectedStatusCode = HttpStatusCode.BadRequest;

            A.CallTo(() => fakeRefreshService.GetListAsync()).Returns(expectedModels);
            A.CallTo(() => fakeRefreshService.RefreshCoursesAsync(A <Guid> .Ignored)).Returns(expectedStatusCode);

            // Act
            var ex = await Assert.ThrowsAsync <HttpResponseException>(() => RefreshCourses.RunAsync(timer, fakeLogger, fakeRefreshService)).ConfigureAwait(false);

            // Assert
            A.CallTo(() => fakeRefreshService.GetListAsync()).MustHaveHappenedOnceExactly();
            A.CallTo(() => fakeRefreshService.RefreshCoursesAsync(A <Guid> .Ignored)).MustHaveHappened(AbortAfterErrorCount, Times.Exactly);
        }
        public async Task RefreshCoursesWhenSimpleListReturnsNoDataOK()
        {
            // Arrange
            var expectedModels = A.CollectionOfFake <SimpleJobProfileModel>(0);
            const HttpStatusCode expectedStatusCode = HttpStatusCode.OK;

            A.CallTo(() => fakeRefreshService.GetListAsync()).Returns(expectedModels);
            A.CallTo(() => fakeRefreshService.RefreshCoursesAsync(A <Guid> .Ignored)).Returns(expectedStatusCode);

            // Act
            await RefreshCourses.RunAsync(timer, fakeLogger, fakeRefreshService).ConfigureAwait(false);

            // Assert
            A.CallTo(() => fakeRefreshService.GetListAsync()).MustHaveHappenedOnceExactly();
            A.CallTo(() => fakeRefreshService.RefreshCoursesAsync(A <Guid> .Ignored)).MustHaveHappened(expectedModels.Count, Times.Exactly);
        }