public async Task ShouldCreateNewQuestion() { var questionDto = new AddQuestionWithWrittenAnswerDto { Answer = "answer", Question = "question", Score = 1.5f }; var json = fixture.Serialize(questionDto); var response = await fixture.RequestSender.PostAsync($"questions", json); response.StatusCode.Should().Be(HttpStatusCode.OK); var responseData = await response.Content.ReadAsStringAsync(); int questionId; int.TryParse(responseData, out questionId).Should().BeTrue(); var created = await fixture.ExecuteDbContext(db => db.Questions.Include(x => x.Answer).FirstOrDefaultAsync(x => x.Id == questionId)); created.Content.Should().Be(questionDto.Question); var answer = created.Answer as WrittenAnswer; answer.Value.Should().Be(questionDto.Answer); answer.MaxScore.Should().Be(questionDto.Score); }
public async Task OrganizationOwnerShouldCreateGroup() { var dto = new CreateGroupDto { Name = "New group" }; var json = fixture.Serialize(dto); var response = await fixture.RequestSender.PostAsync("groups", json); response.StatusCode.Should().Be(HttpStatusCode.OK); var responseData = await response.Content.ReadAsStringAsync(); int groupId; int.TryParse(responseData, out groupId).Should().BeTrue(); var group = await fixture.ExecuteDbContext(x => x.Groups.Include(x => x.GroupMembers).FirstOrDefaultAsync(x => x.Id == groupId)); group.Name.Should().Be(dto.Name); group.GroupMembers.Should().OnlyContain(x => x.UserId == fixture.UserId); }
public async Task ShouldRegisterOrganizationOwner() { var email = "*****@*****.**"; var username = "******"; var normalizedEmail = email.ToUpper(); var dto = new RegisterDto { Email = email, Username = username, Password = "******" }; var json = fixture.Serialize(dto); var response = await fixture.RequestSender.PostAsync("auth/register", json); response.StatusCode.Should().Be(HttpStatusCode.OK); var user = await fixture.ExecuteDbContext(dbContext => dbContext.Users.FirstOrDefaultAsync(user => user.NormalizedEmail == normalizedEmail)); user.Should().NotBeNull(); user.Email.Should().Be(email); user.UserName.Should().Be(username); }
public async Task ShouldCreateCategory() { var dto = new CreateCategoryDto { Name = "Math" }; var json = fixture.Serialize(dto); var response = await fixture.RequestSender.PostAsync("categories", json); var responseJson = await response.Content.ReadAsStringAsync(); response.StatusCode.Should().Be(HttpStatusCode.OK); var responseData = await response.Content.ReadAsStringAsync(); int categoryId; int.TryParse(responseData, out categoryId).Should().BeTrue(); var category = await fixture.Find <Category>(categoryId); category.Name.Should().Be(dto.Name); category.UserId.Should().Be(fixture.UserId); }
public async Task ShouldInviteNewMember(string email, bool isTeacher) { var dto = new InviteUserDto { Email = email, IsTeacher = isTeacher, }; var json = fixture.Serialize(dto); var response = await fixture.RequestSender.PostAsync($"organizations/invitations", json); response.StatusCode.Should().Be(HttpStatusCode.OK); string responseString = await response.Content.ReadAsStringAsync(); int.TryParse(responseString, out int invitationIdFromResponse).Should().BeTrue(); var invitation = await fixture.ExecuteDbContext(db => db.Invitations.Where(x => x.Email == email).SingleAsync()); invitation.Id.Should().Be(invitationIdFromResponse); invitation.InvitedBy.Should().Be(fixture.UserId); invitation.IsTeacher.Should().Be(isTeacher); }
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); }