コード例 #1
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);
            }
        }
コード例 #2
0
        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);
        }
コード例 #3
0
ファイル: GroupsControllerTests.cs プロジェクト: Krztk/KtTest
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
        }
コード例 #6
0
ファイル: TestsControllerTests.cs プロジェクト: Krztk/KtTest
        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);
        }