Esempio n. 1
0
        public async Task TheHandleMethodShouldReturnErrorNoticeWhenNoMenuisPresentAsync()
        {
            // Act
            await commandHandler.HandleAsync(null, string.Empty, CancellationToken.None);

            // Assert
            slackbot.Received().SendMessage(string.Empty, "I don't know which meals are being served today!");
        }
        public async Task TheHandleMethodShouldReturnErrorNoticeWhenNoMenuisPresentAsync()
        {
            // Act
            await commandHandler.HandleAsync(null, string.Empty, default);

            // Assert
            slackbot.Received().SendMessage(string.Empty, "I don't know which meals are being served the day after tomorrow!");
        }
        public async Task TheHandleMethodShouldNotCareAboutCaseSensitivityAsync(string commandName)
        {
            // Act
            await commandHandler.HandleAsync(commandName, string.Empty, default);

            // Assert
            slackbot.Received().SendMessage(string.Empty, "A fake command");
        }
Esempio n. 4
0
        public async Task TheHandleMethodShouldReturnNoticeIfNothingIsFoundAsync()
        {
            // Act
            await commandHandler.HandleAsync(string.Empty, string.Empty, default);

            // Assert
            slackbot.Received().SendMessage(string.Empty, "I don't know which meals are being served this week!");
        }
Esempio n. 5
0
        public async Task TheHandleMethodShouldAddResponseAsync(string regex, string response)
        {
            // Act
            await commandHandler.HandleAsync($"add {regex} {response}", string.Empty, default);

            // Assert
            await chatResponseRepository.Received().AddAsync(regex, response);

            slackbot.Received().SendMessage(string.Empty, "I added your chat response to my AI.");
        }
        public async Task TheHandleMethodShouldClearExistingMenuAsync()
        {
            // Arrange
            menuRepository.DeleteOneAsync(Arg.Any <Expression <Func <Menu, bool> > >(), CancellationToken.None).Returns(1);

            // Act
            await commandHandler.HandleAsync($"{DateTime.Today:ddMMyyyy}", string.Empty, default);

            // Assert
            slackbot.Received().SendMessage(string.Empty, $"I cleared the menu on *{DateTime.Today:dd.MM.yyyy}*.");
        }
        public async Task TheHandleMethodShouldReturnAMaxiumumOfSevenDaysAsync()
        {
            // Act
            await commandHandler.HandleAsync("10", string.Empty, default);

            // Assert
            slackbot.Received().SendMessage(string.Empty, "I don't know which meals are being served the next 7 days!");
        }
Esempio n. 8
0
        public async Task TheHandleMethodShouldOnlyReturnMenusAsync()
        {
            // Arrange
            menuRepository.ToListAsync(Arg.Any <FilterDefinition <Menu> >(), CancellationToken.None).Returns(
                new[]
            {
                new Menu
                {
                    Date  = DateTime.Today.ToString("yyyyMMdd"),
                    Meals = new[] { "Foo" },
                },
            }.ToList());

            // Act
            await commandHandler.HandleAsync("Foo", string.Empty, default);

            // Assert
            slackbot.Received().SendMessage(string.Empty, $"On *{DateTime.Today:dd.MM.yyyy}* the meals are:{Environment.NewLine}1. Foo");
        }
        public async Task TheHandleMethodShouldAcceptWellFormedUrlsFromSlackAsync()
        {
            using (var httpTest = new HttpTest())
            {
                // Arrange
                var importData = new[] { new { date = "20010101", meals = new[] { "foo", "bar" } } };

                httpTest.RespondWithJson(importData);

                // Act
                await commandHandler.HandleAsync("<https://api.myjson.com/bins/1dekrb>", string.Empty, default);

                // Assert
                httpTest.ShouldHaveCalled("https://api.myjson.com/bins/1dekrb");
                slackbot.Received().SendMessage(string.Empty, "I imported 1 menus.");
                await menuRepository.Received().InsertOneAsync(
                    Arg.Is <Menu>(
                        x =>
                        x.Date == "20010101" &&
                        x.Meals[0] == "foo" &&
                        x.Meals[1] == "bar"),
                    CancellationToken.None);
            }
        }
Esempio n. 10
0
        public async Task TheHandleMethodShouldAddMealToExistingMenuAsync()
        {
            // Arrange
            menuRepository.SingleOrDefaultAsync(Arg.Any <Expression <Func <Menu, bool> > >(), CancellationToken.None).Returns(
                new Menu
            {
                Date  = DateTime.Today.ToString("yyyyMMdd"),
                Meals = new[] { "Foo" },
            });

            // Act
            await commandHandler.HandleAsync($"{DateTime.Today:ddMMyyyy} Bar", string.Empty, default);

            // Assert
            await menuRepository.Received().ReplaceOneAsync(
                Arg.Any <Expression <Func <Menu, bool> > >(),
                Arg.Is <Menu>(
                    x => x.Meals.Contains("Foo") && x.Meals.Contains("Bar")));

            slackbot.Received().SendMessage(string.Empty, $"I added _Bar_ to the menu on *{DateTime.Today:dd.MM.yyyy}*.");
        }