public ActionResult PostAnswer(int problemId, AnswerUserModel answer)
        {
            var answerId = _problemService.CreateAnswer(problemId, answer.ToModel());

            if (answerId == 0)
            {
                return(Forbid());
            }
            return(Ok(new Answer {
                Id = answerId
            }));
        }
Esempio n. 2
0
        public void ApproveAnswersTest()
        {
            // Tworzymy nowy problem.
            var id = _problemService.Create(new Problem {
                Name = "xxx", Content = "yyy"
            }).Id;

            // Tworzymy nową odpowiedź.
            var answerId1 = _problemService.CreateAnswer(id, new Answer {
                Content = "xxx"
            });
            var answerId2 = _problemService.CreateAnswer(id, new Answer {
                Content = "yyy"
            });
            var answerId3 = _problemService.CreateAnswer(id, new Answer {
                Content = "zzz"
            });

            // Pobieramy problem i sprawdzamy czy dostajemy odpowiedzi.
            var problem = _problemService.Get(id);

            // Sprawdzamy czy treść odpowiedzi się zgadza.
            Assert.Contains("xxx", problem.Answers.First(a => a.Id == answerId1).Content);
            Assert.Contains("yyy", problem.Answers.First(a => a.Id == answerId2).Content);
            Assert.Contains("zzz", problem.Answers.First(a => a.Id == answerId3).Content);

            // Sprawdzamy czy odpowiedzi oznaczone są jako niezatwierdzone.
            Assert.False(problem.Answers.First(a => a.Id == answerId1).IsApproved);
            Assert.False(problem.Answers.First(a => a.Id == answerId2).IsApproved);
            Assert.False(problem.Answers.First(a => a.Id == answerId3).IsApproved);

            // Zatwierdzamy odpowiedź.
            _problemService.SetAnswerApproval(id, answerId1);

            // Pobrany problem powinien figurować jako rozwiązany.
            var problem1 = _problemService.Get(id);

            Assert.True(problem1.IsSolved);
            Assert.True(problem1.Answers.First(a => a.Id == answerId1).IsApproved);
            Assert.False(problem1.Answers.First(a => a.Id == answerId2).IsApproved);
            Assert.False(problem1.Answers.First(a => a.Id == answerId3).IsApproved);

            // Zatwierdzamy inną odpowiedź.
            _problemService.SetAnswerApproval(id, answerId2);

            // Przy zatwierdzeniu innego rozwiązania odpowiedź pierwsza nie powinna być dalej zatwierdzona.
            var problem2 = _problemService.Get(id);

            Assert.True(problem2.IsSolved);
            Assert.False(problem2.Answers.First(a => a.Id == answerId1).IsApproved);
            Assert.True(problem2.Answers.First(a => a.Id == answerId2).IsApproved);
            Assert.False(problem2.Answers.First(a => a.Id == answerId3).IsApproved);

            // Zdejmujemy zatwierdzenie odpowiedzi.
            _problemService.SetAnswerApproval(id, answerId2, false);

            // Teraz problem powinien figurować jako nierozwiązany.
            var problem3 = _problemService.Get(id);

            Assert.False(problem3.IsSolved);
            Assert.False(problem3.Answers.First(a => a.Id == answerId1).IsApproved);
            Assert.False(problem3.Answers.First(a => a.Id == answerId2).IsApproved);
            Assert.False(problem3.Answers.First(a => a.Id == answerId3).IsApproved);
        }