Ejemplo n.º 1
0
        public async Task ProccesRequest_HelpedAction_ShouldCallExecutorServiceWithAppropriateArgs()
        {
            // Arrange
            var action  = new AttachmentActionDto("actionName", "some text");
            var request = new InteractiveMessage
            {
                Actions = new List <AttachmentActionDto> {
                    action
                }
            };
            var paramsType   = typeof(HelpedSlackActionParams);
            var actionParams = new HelpedSlackActionParams();

            _slackParamsSelectServiceMock.Setup(m => m.Choose(It.IsAny <string>()))
            .Returns(paramsType);
            _mapperMock.Setup(m => m.Map(It.IsAny <object>(), It.IsAny <Type>(), It.IsAny <Type>()))
            .Returns(actionParams);
            _slackExecutorServiceMock.Setup(m => m.ExecuteAction(It.IsAny <Type>(), It.IsAny <object[]>()))
            .Returns(Task.CompletedTask);

            // Act
            await _service.ProcessRequest(request);

            // Assert
            _slackParamsSelectServiceMock.Verify(m => m.Choose(It.Is <string>(n => n == action.Name)), Times.Once);
            _slackParamsSelectServiceMock.VerifyNoOtherCalls();
            _mapperMock.Verify(m => m.Map(It.Is <object>(r => r == request), It.Is <Type>(t => t == request.GetType()),
                                          It.Is <Type>(t => t == actionParams.GetType())));
            _mapperMock.VerifyNoOtherCalls();
            _slackExecutorServiceMock.Verify(m => m.ExecuteAction(It.Is <Type>(t => t == paramsType), It.IsAny <object[]>()), Times.Once);
            _slackExecutorServiceMock.VerifyNoOtherCalls();
        }
Ejemplo n.º 2
0
        public async Task Handle_CorrectParams_ShouldUpdateRankAndSendAnwer()
        {
            // Arrange

            var attachment = new AttachmentDto()
            {
                Actions = new List <AttachmentActionDto> {
                    new AttachmentActionDto("test", "test")
                },
            };

            var originalMessage = new OriginalMessageDto()
            {
                Text        = "testText",
                Attachments = new List <AttachmentDto> {
                    attachment
                },
                TimeStamp = It.IsAny <string>()
            };

            var actionParams = new HelpedSlackActionParams()
            {
                User = new ItemInfo
                {
                    Id   = "id",
                    Name = "Bob"
                },
                OriginalMessage = originalMessage,
                Channel         = new ItemInfo {
                    Id = "channelId", Name = "channelName"
                },
                ButtonParams = new HelpedAnswerActionButtonParams
                {
                    AnswerId   = "1234",
                    QuestionId = "1234"
                }
            };


            _questionService
            .Setup(m => m.AnswerRankUpAsync(It.IsAny <string>(), It.IsAny <string>()))
            .Returns(Task.CompletedTask);

            _slackClient
            .Setup(m => m.UpdateMessageAsync(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <List <AttachmentDto> >()))
            .Returns(Task.CompletedTask);

            // Act
            await _handler.Handle(actionParams);

            // Assert
            _questionService.Verify(
                m => m.AnswerRankUpAsync(actionParams.ButtonParams.QuestionId, actionParams.ButtonParams.AnswerId), Times.Once);
            _questionService.VerifyNoOtherCalls();
            _slackClient.Verify(m => m.UpdateMessageAsync(actionParams.OriginalMessage.TimeStamp, actionParams.Channel.Id,
                                                          It.IsAny <string>(), It.IsAny <IList <AttachmentDto> >()));
            _slackClient.VerifyNoOtherCalls();
        }