예제 #1
0
        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);
        }
예제 #2
0
        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);
        }
예제 #3
0
        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);
            }
        }
예제 #4
0
        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");
        }
예제 #5
0
        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);
        }