Exemple #1
0
        public void MapToTestQuestionDto_QuestionWithWrittenAnswer_ValidDto()
        {
            //arrange
            var expectedDto = new QuestionWithWrittenAnswerDto
            {
                Id       = questionWithWrittenAnswer.Id,
                Question = questionWithWrittenAnswer.Content
            };

            //act
            var mapper = new QuestionServiceMapper();
            var dto    = mapper.MapToTestQuestionDto(questionWithWrittenAnswer);

            //assert
            dto.Should().BeEquivalentTo(expectedDto);
        }
        public async Task ShouldNotUpdateQuestionUsedInTestThatHasStarted()
        {
            var authorId      = fixture.UserId;
            var writtenAnswer = new WrittenAnswer("answer", 1f);
            var question      = new Question("Question?", writtenAnswer, authorId);

            await fixture.ExecuteDbContext(db =>
            {
                db.Questions.Add(question);
                return(db.SaveChangesAsync());
            });

            var testTemplate = new TestTemplateBuilder(authorId, new[] { question.Id }).Build();
            await fixture.ExecuteDbContext(db =>
            {
                db.TestTemplates.Add(testTemplate);
                return(db.SaveChangesAsync());
            });

            var scheduledTest = new ScheduledTestBuilder(
                testTemplate.Id,
                IntegrationTestsDateTimeProvider.utcNow)
                                .SetAsCurrentlyAvailable()
                                .WithUsers(new[] { 2, 3, 4 })
                                .Build();

            await fixture.ExecuteDbContext(db =>
            {
                db.ScheduledTests.Add(scheduledTest);
                return(db.SaveChangesAsync());
            });

            var updateQuestionDto = new QuestionWithWrittenAnswerDto
            {
                Answer     = "new answer",
                Question   = "new question",
                Score      = 1f,
                Categories = new List <int>(),
            };

            var json     = fixture.Serialize(updateQuestionDto);
            var response = await fixture.RequestSender.PostAsync($"questions/{question.Id}", json);

            response.StatusCode.Should().Be(HttpStatusCode.BadRequest);
        }