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))); }
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); }
public async Task <IActionResult> ScheduleTest(int id, PublishTestDto publishTestDto) { var result = await testOrchestrator.ScheduleTest(id, publishTestDto); return(ActionResult(result)); }