public async Task ShouldGetGroupMembers() { var group = new Group("TestGroup#2", fixture.UserId); var member = fixture.OrganizationOwnerMembers[fixture.UserId].First(); group.AddMember(member.Id); await fixture.ExecuteDbContext(x => { x.Groups.Add(group); return(x.SaveChangesAsync()); }); var groupId = group.Id; var response = await fixture.RequestSender.GetAsync($"groups/{groupId}/members"); response.StatusCode.Should().Be(HttpStatusCode.OK); var responseJson = await response.Content.ReadAsStringAsync(); var members = fixture.Deserialize <List <UserDto> >(responseJson); var mapper = new OrganizationServiceMapper(); var memberDtos = new List <AppUser> { fixture.TestUser, member }.Select(mapper.MapToUserDto); members.Should().BeEquivalentTo(memberDtos); }
public async Task ShouldGetOrganizationMembers() { var organizationOwner = fixture.UserId; var response = await fixture.RequestSender.GetAsync("organizations/members"); response.StatusCode.Should().Be(HttpStatusCode.OK); var responseJson = await response.Content.ReadAsStringAsync(); var members = fixture.Deserialize <List <UserDto> >(responseJson); var mapper = new OrganizationServiceMapper(); var memberDtos = fixture.OrganizationOwnerMembers[organizationOwner].Select(mapper.MapToUserDto); members.Should().BeEquivalentTo(memberDtos); }
public async Task ShouldGetAllCategories() { var categories = new List <Category> { new Category("Test Category #1", fixture.UserId), new Category("Test Category #2", fixture.UserId), }; await fixture.ExecuteDbContext(db => { db.Categories.AddRange(categories); return(db.SaveChangesAsync()); }); var mapper = new CategoryServiceMapper(); var categoryDtos = categories.Select(mapper.MapToCategoryDto).ToArray(); var response = await fixture.RequestSender.GetAsync("categories"); response.StatusCode.Should().Be(HttpStatusCode.OK); var responseJson = await response.Content.ReadAsStringAsync(); var returnedCategories = fixture.Deserialize <CategoryDto[]>(responseJson); returnedCategories.Should().NotBeEmpty(); foreach (var categoryDto in categoryDtos) { returnedCategories.Should().ContainEquivalentOf(categoryDto); } }
public async Task ShouldNotCreateNewQuestionBecauseDtoIsNotValid() { var questionDtoWithEmptyAnswerField = new AddQuestionWithWrittenAnswerDto { Answer = "", Question = "question", Score = 1.5f }; var json = fixture.Serialize(questionDtoWithEmptyAnswerField); var response = await fixture.RequestSender.PostAsync($"questions", json); var responseJson = await response.Content.ReadAsStringAsync(); response.StatusCode.Should().Be(HttpStatusCode.BadRequest); var validationError = fixture.Deserialize <ValidationErrorResponse>(responseJson); validationError.Errors.Should().ContainKey("Answer"); }
public async Task TeacherShouldGetTestResults() { ScheduledTest scheduledTest = controllerFixture.ScheduledTest; float maxScore = controllerFixture.TestMaxScore; string testName = controllerFixture.TestTemplate.Name; var studentIdUsername = fixture.OrganizationOwnerMembers[fixture.UserId] .Where(x => scheduledTest.UserTests.Any(y => y.UserId == x.Id)) .ToDictionary(x => x.Id, x => x.UserName); List <UserTestResultDto> results = controllerFixture.StudentIdTestScore.Select( x => new UserTestResultDto { UserId = x.Key, UserScore = x.Value, Status = TestStatus.Completed.ToString(), Username = studentIdUsername[x.Key] }).ToList(); var expectedDto = new GroupResultsDto { MaxTestScore = maxScore, Ended = true, TestId = scheduledTest.Id, TestName = testName, Results = results }; var response = await fixture.RequestSender.GetAsync($"tests/{scheduledTest.Id}/results"); response.StatusCode.Should().Be(HttpStatusCode.OK); var responseData = await response.Content.ReadAsStringAsync(); var result = fixture.Deserialize <GroupResultsDto>(responseData); result.Should().BeEquivalentTo(expectedDto); }