示例#1
0
        public async Task TestIsRelevant()
        {
            userRepositoryMock.Setup(u => u.IsUserInDbAsync(It.IsAny <ulong>())).Returns(() => Task.FromResult(false));
            userRepositoryMock.Setup(u => u.AddUserToDbAsync(It.IsAny <ulong>())).Returns(() => Task.CompletedTask);
            userRepositoryMock.Setup(u => u.IsAllowedAsync(It.IsAny <string>(), It.IsAny <ulong>())).Returns(() => Task.FromResult(true));
            msgChannelMock.Setup(m => m.WriteToAsync(It.IsAny <CommandResponse>())).Returns(Task.CompletedTask);

            Message message    = new Message(0, "test", msgChannelMock.Object);
            var     botService = new BotService(ConfigureServices());
            await botService.InitAsync().ConfigureAwait(false);

            await botService.RunAsync().ConfigureAwait(false);

            MessageReceivedEventArgs eventArgs = new MessageReceivedEventArgs(null);

            msgHandlerMock.Raise(m => m.MessageReceived += null, this, eventArgs);

            eventArgs = new MessageReceivedEventArgs(message);
            msgHandlerMock.Raise(m => m.MessageReceived += null, this, eventArgs);

            AppSettings.IsTesting     = true;
            AppSettings.Configuration = "test";
            eventArgs = new MessageReceivedEventArgs(message);
            msgHandlerMock.Raise(m => m.MessageReceived += null, this, eventArgs);
            AppSettings.IsTesting = false;

            message   = new Message(1, "test", msgChannelMock.Object);
            eventArgs = new MessageReceivedEventArgs(message);
            msgHandlerMock.Raise(m => m.MessageReceived += null, this, eventArgs);
        }
示例#2
0
        public async Task TestInitRunAndShutDownBotService()
        {
            var botService = new BotService(ConfigureServices());
            await botService.InitAsync().ConfigureAwait(false);

            await botService.RunAsync().ConfigureAwait(false);

            botService.IsRunning.Should().BeTrue();
            await botService.ShutdownAsync().ConfigureAwait(false);

            botService.IsRunning.Should().BeFalse();
        }
示例#3
0
        public async Task TestStartupProgressMessageAndShutDown()
        {
            CommandHandler.Clear();
            CommandHandler.Register(new CommandDefinition(typeof(PingCommand), new List <string>()
            {
                "ping"
            }));
            Assert.True(CommandHandler.Count == 1);
            ConfigureServicesForTests();
            BotService botService = new BotService(msgHandlerMock.Object);
            await botService.InitAsync().ConfigureAwait(false);

            await botService.RunAsync().ConfigureAwait(false);

            Assert.True(botService.IsRunning);
            msgHandlerMock.Verify(m => m.InitAsync(), Times.Once);
            msgHandlerMock.Verify(m => m.RunAsync(), Times.Once);
            bool            isPublic        = false;
            CommandResponse commandResponse = new CommandResponse(CommandStatus.Error, "");

            Mock <IMessageChannel> msgChannelMock = new Mock <IMessageChannel>(MockBehavior.Strict);

            msgChannelMock.SetupGet(m => m.IsPrivate).Returns(true);

            msgChannelMock.Setup(m => m.WriteToAsync(It.IsAny <bool>(), It.IsAny <CommandResponse>()))
            .Callback <bool, CommandResponse>((b, cr) =>
            {
                isPublic        = b;
                commandResponse = cr;
            })
            .Returns(Task.CompletedTask);

            Message message = new Message(0, "ping", msgChannelMock.Object);
            MessageReceivedEventArgs eventArgs = new MessageReceivedEventArgs(message);

            msgHandlerMock.Raise(m => m.MessageReceived += null, this, eventArgs);

            message   = new Message(0, "test", msgChannelMock.Object);
            eventArgs = new MessageReceivedEventArgs(message);
            msgHandlerMock.Raise(m => m.MessageReceived += null, this, eventArgs);

            await Task.Delay(1000).ConfigureAwait(false);

            Assert.True(isPublic);
            Assert.Equal(CommandStatus.Success, commandResponse.Status);
            Assert.Equal("Pong !", commandResponse.Content);

            await botService.ShutdownAsync().ConfigureAwait(false);

            Assert.False(botService.IsRunning);
            msgHandlerMock.Verify(m => m.ShutdownAsync(), Times.Once);
        }
示例#4
0
        public async Task TestInitRunAndShutDownBotService()
        {
            var msgHandler = msgHandlerMock.Object;
            var botService = new BotService(msgHandler);
            await botService.InitAsync().ConfigureAwait(false);

            await botService.RunAsync().ConfigureAwait(false);

            Assert.True(botService.IsRunning);
            await botService.ShutdownAsync().ConfigureAwait(false);

            Assert.False(botService.IsRunning);
        }
示例#5
0
        public async Task TestStartupProgressMessageAndShutDown()
        {
            Program.ServiceProvider = Program.ConfigureServices();
            userRepositoryMock.Setup(u => u.IsUserInDbAsync(It.IsAny <ulong>())).Returns(() => Task.FromResult(true));
            userRepositoryMock.Setup(u => u.AddUserToDbAsync(It.IsAny <ulong>())).Returns(() => Task.CompletedTask);
            userRepositoryMock.Setup(u => u.IsAllowedAsync(It.IsAny <string>(), It.IsAny <ulong>())).Returns(() => Task.FromResult(true));

            CommandHandler.Clear();
            CommandHandler.Register(new CommandDefinition(typeof(PingCommand), new List <string>()
            {
                "ping"
            }));

            CommandHandler.Count.Should().Be(1);

            var botService = new BotService(ConfigureServices());
            await botService.InitAsync().ConfigureAwait(false);

            await botService.RunAsync().ConfigureAwait(false);

            botService.IsRunning.Should().BeTrue();
            msgHandlerMock.Verify(m => m.InitAsync(), Times.Once);
            msgHandlerMock.Verify(m => m.RunAsync(), Times.Once);

            CommandResponse commandResponse = new CommandResponse(CommandStatus.Error, "");

            msgChannelMock.Setup(m => m.ReplyToAsync(It.IsAny <Message>(), It.IsAny <CommandResponse>()))
            .Callback <Message, CommandResponse>((m, cr) =>
            {
                commandResponse = cr;
            })
            .Returns(Task.CompletedTask);

            Message message = new Message(0, "ping", msgChannelMock.Object);
            MessageReceivedEventArgs eventArgs = new MessageReceivedEventArgs(message);

            msgHandlerMock.Raise(m => m.MessageReceived += null, this, eventArgs);
            commandResponse.Status.Should().Be(CommandStatus.Success);
            commandResponse.Content.Should().Be("Pong !");

            await Task.Delay(1000).ConfigureAwait(false);

            await botService.ShutdownAsync().ConfigureAwait(false);

            botService.IsRunning.Should().BeFalse();
            msgHandlerMock.Verify(m => m.ShutdownAsync(), Times.Once);
        }