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(); }
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(); }