Exemple #1
0
        public async Task <IActionResult> Get([FromRoute] Guid questionId)
        {
            var request  = new GetQuestionResult(questionId);
            var response = await _mediator.Send(request);

            return(HandleErrors(response, Ok));
        }
Exemple #2
0
        public override async Task Execute(IReadOnlyList <string> args)
        {
            var selectedQuestion = await CommandLineHelper.AskToSelectQuestion(_mediator);

            if (selectedQuestion is null)
            {
                return;
            }

            var getQuestionResult = new GetQuestionResult(selectedQuestion.Id);
            QuestionResultViewModel getQuestionResultResponse;

            try
            {
                getQuestionResultResponse = await _mediator.Send(getQuestionResult)
                                            .OnError(error => throw new InvalidOperationException(error.ToString()));
            }
            catch (Exception exception)
            {
                exception.WriteToConsole();
                return;
            }

            WriteResultToConsole(selectedQuestion, getQuestionResultResponse);

            WatchForChanges(selectedQuestion, getQuestionResultResponse);
        }
Exemple #3
0
        public async Task Check_If_Votes_Incremented()
        {
            await LogInAsAdministrator();

            var createQuestion = new CreateQuestion(
                questionText: "Some question?",
                answers: new[] { "First answer", "Second answer" });
            var createQuestionResponse = await Mediator.Send(createQuestion);

            var createdQuestionId = AssertNotError.Of(createQuestionResponse);

            var getQuestion      = new GetQuestion(createdQuestionId);
            var questionResponse = await Mediator.Send(getQuestion);

            var createdQuestion = AssertNotError.Of(questionResponse);

            await LogInAsVoter();

            var voteFor = new VoteFor(
                questionId: createdQuestion.Id,
                answerId: createdQuestion.Answers[1].Id);
            var voteForResponse = await Mediator.Send(voteFor);

            var getQuestionResult      = new GetQuestionResult(createdQuestion.Id);
            var questionResultResponse = await Mediator.Send(getQuestionResult);

            AssertNotError.Of(voteForResponse);
            var questionResult = AssertNotError.Of(questionResultResponse);

            Assert.Multiple(() =>
            {
                Assert.That(questionResult.Answers[0].Votes, Is.EqualTo(0));
                Assert.That(questionResult.Answers[1].Votes, Is.EqualTo(1));
            });
        }
        public async Task Should_Return_Error_When_Request_For_Result_Of_Not_Voted_Question()
        {
            await LogInAsAdministrator();

            var createQuestion = new CreateQuestion(
                questionText: "Some question?",
                answers: new[] { "First answer", "Second answer" });
            var createQuestionResponse = await Mediator.Send(createQuestion);

            var questionId = AssertNotError.Of(createQuestionResponse);

            await LogInAsVoter();

            var getResult         = new GetQuestionResult(questionId);
            var getResultResponse = await Mediator.Send(getResult);

            AssertError <AuthorizationError> .Of(getResultResponse);
        }
        public async Task Check_If_Question_Results_Are_Valid()
        {
            await LogInAsAdministrator();

            var createFirstQuestion = new CreateQuestion(
                questionText: "Some question?",
                answers: new[] { "First answer", "Second answer" });
            var createFirstQuestionResponse = await Mediator.Send(createFirstQuestion);

            var firstQuestionId = AssertNotError.Of(createFirstQuestionResponse);

            var getFirstQuestion      = new GetQuestion(firstQuestionId);
            var firstQuestionResponse = await Mediator.Send(getFirstQuestion);

            var firstQuestion = AssertNotError.Of(firstQuestionResponse);

            var createSecondQuestion = new CreateQuestion(
                questionText: "Another question?",
                answers: new[] { "Any answer", "Some answer" });
            var createSecondQuestionResponse = await Mediator.Send(createSecondQuestion);

            var secondQuestionId = AssertNotError.Of(createSecondQuestionResponse);

            var getSecondQuestion      = new GetQuestion(secondQuestionId);
            var secondQuestionResponse = await Mediator.Send(getSecondQuestion);

            var secondQuestion = AssertNotError.Of(secondQuestionResponse);

            var firstVoteFor = new VoteFor(firstQuestion.Id, firstQuestion.Answers[0].Id);
            await Mediator.Send(firstVoteFor);

            var secondVoteFor = new VoteFor(secondQuestion.Id, secondQuestion.Answers[1].Id);
            await Mediator.Send(secondVoteFor);

            await LogInAsVoter();

            var thirdVoteFor = new VoteFor(firstQuestion.Id, firstQuestion.Answers[0].Id);
            await Mediator.Send(thirdVoteFor);

            var fourthVoteFor = new VoteFor(secondQuestion.Id, secondQuestion.Answers[0].Id);
            await Mediator.Send(fourthVoteFor);

            var getFirstResult      = new GetQuestionResult(firstQuestion.Id);
            var firstResultResponse = await Mediator.Send(getFirstResult);

            var firstResult = AssertNotError.Of(firstResultResponse);

            var getSecondResult      = new GetQuestionResult(secondQuestion.Id);
            var secondResultResponse = await Mediator.Send(getSecondResult);

            var secondResult = AssertNotError.Of(secondResultResponse);

            Assert.Multiple(() =>
            {
                Assert.That(firstResult.Answers[0].Votes, Is.EqualTo(2));
                Assert.That(firstResult.Answers[1].Votes, Is.EqualTo(0));

                Assert.That(secondResult.Answers[0].Votes, Is.EqualTo(1));
                Assert.That(secondResult.Answers[1].Votes, Is.EqualTo(1));
            });
        }