public async Task NoWordExist_Should_ChangeChatConfig_And_ReplyMessage()
    {
        // Arrange
        var          channelConfigurationServiceMock = new Mock <IDiscordChannelConfigService>();
        var          command      = new AddWhiteListCommand(channelConfigurationServiceMock.Object);
        const string replyMessage = "added to the WhiteList";

        var chatConfig = new DiscordChannelConfig
        {
            WhiteListWords = new() { "Word" }
        };

        var channelMock = new Mock <IMessageChannel>();
        var user        = new Mock <IGuildUser>();

        user.Setup(v => v.GuildPermissions).Returns(GuildPermissions.All);
        var message = new Mock <IMessage>();

        message.Setup(v => v.Content).Returns($"{DiscordBotCommands.AddWhiteList} Word2");
        message.Setup(v => v.Author).Returns(user.Object);
        message.Setup(v => v.Channel).Returns(channelMock.Object);

        channelConfigurationServiceMock.Setup(v => v.GetConfigurationByChannelId(message.Object.Channel.Id))
        .ReturnsAsync(chatConfig);

        // Act
        await command.Handle(message.Object);

        // Assert

        // Verify SendMessageAsync was called with the reply message "added to the WhiteList"
        channelMock.Verify(v => v.SendMessageAsync(null, false, It.Is <Embed>(e => e.Description.Contains(replyMessage)), null, null, null, null, null, null, MessageFlags.None));
        Assert.Equal(2, chatConfig.WhiteListWords.Count);
    }
}
예제 #2
0
    public async Task NoParameter_Should_ReplyMessage()
    {
        // Arrange
        var          chatConfigurationServiceMock = new Mock <IChatConfigurationService>();
        var          telegramBotClientMock        = new Mock <ITelegramBotClientWrapper>();
        var          command      = new AddWhiteListCommand(chatConfigurationServiceMock.Object, telegramBotClientMock.Object);
        const string replyMessage = "Parameter not received";

        var chatConfig = new ChatConfiguration
        {
            WhiteListWords = null
        };

        var message = new Message
        {
            Text = TelegramBotCommands.AddWhiteList,
            From = new User {
                Id = 2
            },
            Chat = new Chat
            {
                Id   = 1,
                Type = ChatType.Group
            }
        };

        telegramBotClientMock.Setup(v => v.GetChatAdministratorsAsync(message.Chat.Id, default))
        .ReturnsAsync(new[] { new ChatMemberMember {
                                  User = new() { Id = message.From.Id }
                              } });