Exemple #1
0
        public PollHandlerTests()
        {
            //Arrange
            _mockLogger             = new Mock <ILoggerFactory>();
            _createPollCommandValid = new CreatePollCommand();
            _createPollCommandValid.Poll_Description = "poll 1";
            string option1 = "option 1";
            string option2 = "option 2";
            string option3 = "option 3";

            _createPollCommandValid.Options = new List <string>
            {
                option1, option2, option3
            };

            _createPollCommandInvalid = new CreatePollCommand();
            _createPollCommandInvalid.Poll_Description = "";
            _createPollCommandInvalid.Options          = new List <string>
            {
                "", "", ""
            };

            _polls = new List <Poll>();

            var poll1 = new Poll(new DescriptionVO("poll 1"));

            poll1.addOptions(new OptionPoll(new DescriptionVO("opt 1")));
            poll1.addOptions(new OptionPoll(new DescriptionVO("opt 2")));

            var poll2 = new Poll(new DescriptionVO("poll 2"));

            poll2.addOptions(new OptionPoll(new DescriptionVO("opt 3")));
            poll2.addOptions(new OptionPoll(new DescriptionVO("opt 4")));

            _polls.Add(poll1);
            _polls.Add(poll2);



            _getPollByIdCommandValid   = new UpdatePollByIdCommand(Guid.NewGuid());
            _getPollByIdCommandInvalid = new UpdatePollByIdCommand();



            //ACT
        }
        public async Task <ICommandResult> Handle(UpdatePollByIdCommand command)
        {
            try
            {
                command.Validate();
                if (command.Invalid)
                {
                    return(new GenericCommandResult(true, "Enquete inválida", command.Notifications));
                }

                //obtem a enquete por id
                var poll = await _pollRepository.GetById(command.Poll_Id);

                if (poll == null)
                {
                    return(new GenericCommandResult(true, "Enquete não encontrada", null));
                }
                //incrementa a visualização
                poll.increaseView();

                // salva a alteração feita na views
                await _pollRepository.Update(poll);

                GetPollByIdCommandResult getPollByIdCommandResult = new GetPollByIdCommandResult(poll.Id, poll.Description.Description);
                foreach (var item in poll.OptionsPoll)
                {
                    getPollByIdCommandResult.options.Add(new GetOptionsPollByPolIdCommandResult(item.Id, item.Description.Description));
                }

                if (Commit())
                {
                    return(new GenericCommandResult(true, "Enquete recuperada com sucesso", getPollByIdCommandResult));
                }
                else
                {
                    return(new GenericCommandResult(false, "Falha ao recuperar enquete enquete", null));
                }
            }
            catch (Exception ex)
            {
                _logger.LogError("VoteOptionPollCommand --> {Poll_Id}", command.Poll_Id, ex);
                return(new GenericCommandResult(false, "Falha ao obter enquete", ex));
            }
        }