Ejemplo n.º 1
0
        public async Task <OperationResult <Unit> > ScheduleTest(int testId, PublishTestDto publishTestDto)
        {
            if (publishTestDto.StartDate >= publishTestDto.EndDate &&
                dateTimeProvider.UtcNow >= publishTestDto.StartDate)
            {
                return(new BadRequestError());
            }

            return(await groupService.IsUserMemberOfGroup(userContext.UserId, publishTestDto.GroupId)
                   .Then(_ => groupService.GetStudentsInGroup(publishTestDto.GroupId))
                   .Then(students => testService.ScheduleTest(testId,
                                                              publishTestDto.StartDate,
                                                              publishTestDto.EndDate,
                                                              publishTestDto.DurationInMinutes,
                                                              students)));
        }
Ejemplo n.º 2
0
        public async Task ShouldntScheduleTestIfThereAreNoStudentsInTheGroup()
        {
            var groupWithoutStudents = new Group("Almost empty group", fixture.UserId);
            await fixture.ExecuteDbContext(db =>
            {
                db.Add(groupWithoutStudents);
                return(db.SaveChangesAsync());
            });

            var dto = new PublishTestDto
            {
                StartDate         = IntegrationTestsDateTimeProvider.utcNow.AddDays(1),
                EndDate           = IntegrationTestsDateTimeProvider.utcNow.AddDays(3),
                GroupId           = groupWithoutStudents.Id,
                DurationInMinutes = 30
            };
            int    testTemplateId = controllerFixture.TestTemplate.Id;
            string bodyJson       = fixture.Serialize(dto);
            var    response       = await fixture.RequestSender.PostAsync($"tests/{testTemplateId}/publish", bodyJson);

            response.StatusCode.Should().Be(HttpStatusCode.BadRequest);
        }
Ejemplo n.º 3
0
        public async Task <IActionResult> ScheduleTest(int id, PublishTestDto publishTestDto)
        {
            var result = await testOrchestrator.ScheduleTest(id, publishTestDto);

            return(ActionResult(result));
        }