public async Task <IActionResult> Get([FromRoute] Guid questionId) { var request = new GetQuestionResult(questionId); var response = await _mediator.Send(request); return(HandleErrors(response, Ok)); }
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); }
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)); }); }