Beispiel #1
0
        public void AddTheValidGuessOfAUser()
        {
            var sut = new GuessGame(GuessGameState.OpenTakingGuesses);
            Mock <IChatService> chatserviceMock = new Mock <IChatService>();

            chatserviceMock.Setup(x => x.BroadcastMessageOnChannel(It.IsAny <string>()));
            var cmd = new GuessGameCommand()
            {
                ArgumentsAsList = new List <string>()
                {
                    "1:23",
                },
                ChatUser = new ChatUser()
                {
                    IsBroadcaster = false,
                    IsModerator   = false,
                    DisplayName   = "User1",
                    Username      = "******"
                }
            };

            sut.Guess(chatserviceMock.Object, cmd);

            chatserviceMock.Verify(x => x.BroadcastMessageOnChannel(It.IsAny <string>()), Times.Never);
            Assert.Equal(GuessGameState.OpenTakingGuesses, sut.CurrentState());
            Assert.Equal(1, sut.GuessCount());
        }
Beispiel #2
0
        public void BeAllowedForBroadcastersAndModerators()
        {
            var sut = new GuessGame(GuessGameState.NotStarted);
            Mock <IChatService> chatserviceMock = new Mock <IChatService>();

            chatserviceMock.Setup(x => x.BroadcastMessageOnChannel(It.IsAny <string>()));
            var cmd = new GuessGameCommand()
            {
                ArgumentsAsList = new List <string>()
                {
                    "open",
                },
                ChatUser = new ChatUser()
                {
                    IsBroadcaster = true,
                    IsModerator   = false,
                    DisplayName   = "User1",
                    Username      = "******"
                }
            };

            sut.Open(chatserviceMock.Object, cmd);

            //verify everything happened as needed
            chatserviceMock.Verify(x => x.BroadcastMessageOnChannel(It.Is <string>(m => m == "Now taking guesses. Submit your guess with !guess 1:23 where 1 is minutes and 23 is seconds.")), Times.Once);
            Assert.Equal(GuessGameState.OpenTakingGuesses, sut.CurrentState());
        }
        public void NotBeAllowedForRegularChatters()
        {
            var sut = new GuessGame(GuessGameState.OpenTakingGuesses);
            Mock <IChatService> chatserviceMock = new Mock <IChatService>();

            chatserviceMock.Setup(x => x.BroadcastMessageOnChannel(It.IsAny <string>()));
            var cmd = new GuessGameCommand()
            {
                ArgumentsAsList = new List <string>()
                {
                    "close",
                },
                ChatUser = new ChatUser()
                {
                    IsBroadcaster = false,
                    IsModerator   = false,
                    DisplayName   = "User1",
                    Username      = "******"
                }
            };

            Assert.Throws <InvalidOperationException>(() => sut.Close(chatserviceMock.Object, cmd));

            //verify everything happened as needed
            chatserviceMock.Verify(x => x.BroadcastMessageOnChannel(It.Is <string>(m => m == "Now taking guesses. Submit your guess with !guess 1:23 where 1 is minutes and 23 is seconds.")), Times.Never);
            Assert.Equal(GuessGameState.OpenTakingGuesses, sut.CurrentState());
        }
Beispiel #4
0
        public void WhisperNextAvailableCommands_WhenClosed_GivenUserIsBroadcasterOrModerator()
        {
            var sut = new GuessGame(GuessGameState.GuessesClosed);
            Mock <IChatService> chatserviceMock = new Mock <IChatService>();

            chatserviceMock.Setup(x => x.BroadcastMessageOnChannel(It.IsAny <string>()));
            chatserviceMock.Setup(x => x.WhisperMessage(It.IsAny <string>(), It.IsAny <string>()));
            var cmd = new GuessGameCommand()
            {
                ArgumentsAsList = new List <string>()
                {
                    //"",
                },
                ChatUser = new ChatUser()
                {
                    DisplayName   = "User1",
                    Username      = "******",
                    IsBroadcaster = true
                }
            };

            sut.Help(chatserviceMock.Object, cmd);
            chatserviceMock.Verify(service => service.BroadcastMessageOnChannel(It.IsAny <string>()), Times.Never);
            chatserviceMock.Verify(service => service.WhisperMessage(It.IsAny <string>(), It.IsAny <string>()), Times.Once);
        }
Beispiel #5
0
        public void WhisperTheGameIsTakingGuesses_WhenTakingGuesses_GivenUserIsBroadcaster()
        {
            var sut = new GuessGame(GuessGameState.OpenTakingGuesses);
            Mock <IChatService> chatserviceMock = new Mock <IChatService>();

            chatserviceMock.Setup(x => x.WhisperMessage(It.IsAny <string>(), It.IsAny <string>()));
            var cmd = new GuessGameCommand()
            {
                ArgumentsAsList = new List <string>()
                {
                    //"",
                },
                ChatUser = new ChatUser()
                {
                    DisplayName   = "User1",
                    Username      = "******",
                    IsBroadcaster = true
                }
            };

            sut.Help(chatserviceMock.Object, cmd);
            chatserviceMock.Verify(service => service.WhisperMessage(
                                       It.Is <string>(m => m == "user1"),
                                       It.Is <string>(m => m == "The time-guessing game is currently taking guesses.  Guess a time with !guess 1:23, Your last guess will stand, and you can check your guess with !guess mine, OR close the guesses with !guess close")), Times.Once);
        }
        public void BroadcastMinAndMaxGuesses()
        {
            var sut = new GuessGame(GuessGameState.OpenTakingGuesses);
            Mock <IChatService> chatserviceMock = new Mock <IChatService>();

            chatserviceMock.Setup(x => x.BroadcastMessageOnChannel(It.IsAny <string>()));
            var cmd = new GuessGameCommand()
            {
                ArgumentsAsList = new List <string>()
                {
                    "1:23",
                },
                ChatUser = new ChatUser()
                {
                    IsBroadcaster = false,
                    IsModerator   = false,
                    DisplayName   = "User1",
                    Username      = "******"
                }
            };

            sut.Guess(chatserviceMock.Object, cmd);

            cmd = new GuessGameCommand()
            {
                ArgumentsAsList = new List <string>()
                {
                    "1:59",
                },
                ChatUser = new ChatUser()
                {
                    IsBroadcaster = false,
                    IsModerator   = false,
                    DisplayName   = "User2",
                    Username      = "******"
                }
            };

            sut.Guess(chatserviceMock.Object, cmd);
            cmd = new GuessGameCommand()
            {
                ArgumentsAsList = new List <string>()
                {
                    "close",
                },
                ChatUser = new ChatUser()
                {
                    IsBroadcaster = true,
                    IsModerator   = false,
                    DisplayName   = "User1",
                    Username      = "******"
                }
            };

            sut.Close(chatserviceMock.Object, cmd);

            //verify everything happened as needed
            chatserviceMock.Verify(x => x.BroadcastMessageOnChannel(It.Is <string>(m => m == "No more guesses...  the race is about to start with 2 guesses from 00:01:23 to 00:01:59")), Times.Once);
            Assert.Equal(GuessGameState.GuessesClosed, sut.CurrentState());
        }
        public void SetTheGameToNotStartedState_GivenUserIsBroadcaster()
        {
            var sut = new GuessGame(GuessGameState.GuessesClosed);
            Mock <IChatService> chatService = new Mock <IChatService>();

            chatService.Setup(x => x.BroadcastMessageOnChannel(It.IsAny <string>()));
            var cmd = new GuessGameCommand()
            {
                ArgumentsAsList = new List <string>()
                {
                    "reset",
                    "1:23"
                },
                ChatUser = new ChatUser()
                {
                    DisplayName   = "User1",
                    Username      = "******",
                    IsBroadcaster = true
                }
            };

            sut.Reset(chatService.Object, cmd);
            Assert.Equal(GuessGameState.NotStarted, sut.CurrentState());
            Assert.Equal(0, sut.GuessCount());
            //chatService.Verify(service => service.BroadcastMessageOnChannel(It.Is<string>(s => s == "user1 has not guessed yet!")), Times.Once());
        }
Beispiel #8
0
        public void BroadcastInvalidGuess(string guess)
        {
            var sut = new GuessGame(GuessGameState.OpenTakingGuesses);
            Mock <IChatService> chatserviceMock = new Mock <IChatService>();

            chatserviceMock.Setup(x => x.BroadcastMessageOnChannel(It.IsAny <string>()));
            var cmd = new GuessGameCommand()
            {
                ArgumentsAsList = new List <string>()
                {
                    guess,
                },
                ChatUser = new ChatUser()
                {
                    IsBroadcaster = false,
                    IsModerator   = false,
                    DisplayName   = "User1",
                    Username      = "******"
                }
            };

            sut.Guess(chatserviceMock.Object, cmd);
            chatserviceMock.Verify(x => x.BroadcastMessageOnChannel(It.Is <string>(s => s == "Sorry user1, guesses are only accepted in the format !guess 1:23")), Times.Once);
            Assert.Equal(GuessGameState.OpenTakingGuesses, sut.CurrentState());
            Assert.Equal(0, sut.GuessCount());
        }
Beispiel #9
0
        public void BroadcastWhenAlreadyGuessedByOtherUser()
        {
            var sut = new GuessGame(GuessGameState.OpenTakingGuesses);
            Mock <IChatService> chatserviceMock = new Mock <IChatService>();

            chatserviceMock.Setup(x => x.BroadcastMessageOnChannel(It.IsAny <string>()));
            var cmd = new GuessGameCommand()
            {
                ArgumentsAsList = new List <string>()
                {
                    "1:23",
                },
                ChatUser = new ChatUser()
                {
                    IsBroadcaster = false,
                    IsModerator   = false,
                    DisplayName   = "User1",
                    Username      = "******"
                }
            };

            sut.Guess(chatserviceMock.Object, cmd);

            cmd = new GuessGameCommand()
            {
                ArgumentsAsList = new List <string>()
                {
                    "1:23",
                },
                ChatUser = new ChatUser()
                {
                    IsBroadcaster = false,
                    IsModerator   = false,
                    DisplayName   = "User2",
                    Username      = "******"
                }
            };

            sut.Guess(chatserviceMock.Object, cmd);

            chatserviceMock.Verify(x => x.BroadcastMessageOnChannel(It.Is <string>(s => s == "Sorry user2, user1 already guessed 00:01:23")), Times.Once);
            Assert.Equal(GuessGameState.OpenTakingGuesses, sut.CurrentState());
            Assert.Equal(1, sut.GuessCount());
        }
        public void AnnounceAClosestWinner_GivenUserIsBroadcaster()
        {
            var sut = new GuessGame(GuessGameState.OpenTakingGuesses);
            Mock <IChatService> chatService = new Mock <IChatService>();

            chatService.Setup(x => x.BroadcastMessageOnChannel(It.IsAny <string>()));
            var cmd = new GuessGameCommand()
            {
                ArgumentsAsList = new List <string>()
                {
                    "1:24",
                },
                ChatUser = new ChatUser()
                {
                    DisplayName   = "User1",
                    Username      = "******",
                    IsBroadcaster = true
                }
            };

            sut.Guess(chatService.Object, cmd);
            sut.Close(chatService.Object, cmd);
            cmd = new GuessGameCommand()
            {
                ArgumentsAsList = new List <string>()
                {
                    "reset",
                    "1:23",
                },
                ChatUser = new ChatUser()
                {
                    DisplayName   = "User1",
                    Username      = "******",
                    IsBroadcaster = true
                }
            };
            sut.Reset(chatService.Object, cmd);
            Assert.Equal(GuessGameState.NotStarted, sut.CurrentState());
            chatService.Verify(service => service.BroadcastMessageOnChannel(It.Is <string>(s => s == "No winners THIS time, but user1 was closest at just 1 seconds off!")), Times.Once());
        }
        public void AnnounceWinner_GivenUserIsBroadcaster()
        {
            var sut = new GuessGame(GuessGameState.OpenTakingGuesses);
            Mock <IChatService> chatService = new Mock <IChatService>();

            chatService.Setup(x => x.BroadcastMessageOnChannel(It.IsAny <string>()));
            var cmd = new GuessGameCommand()
            {
                ArgumentsAsList = new List <string>()
                {
                    "1:23",
                },
                ChatUser = new ChatUser()
                {
                    DisplayName   = "User1",
                    Username      = "******",
                    IsBroadcaster = true
                }
            };

            sut.Guess(chatService.Object, cmd);
            sut.Close(chatService.Object, cmd);
            cmd = new GuessGameCommand()
            {
                ArgumentsAsList = new List <string>()
                {
                    "reset",
                    "1:23",
                },
                ChatUser = new ChatUser()
                {
                    DisplayName   = "User1",
                    Username      = "******",
                    IsBroadcaster = true
                }
            };
            sut.Reset(chatService.Object, cmd);
            Assert.Equal(GuessGameState.NotStarted, sut.CurrentState());
            chatService.Verify(service => service.BroadcastMessageOnChannel(It.Is <string>(s => s == "WINNER!!! - Congratulations user1 - you have won!")), Times.Once());
        }
        public void JustReset_GivenUserIsBroadcaster()
        {
            var sut = new GuessGame(GuessGameState.OpenTakingGuesses);
            Mock <IChatService> chatService = new Mock <IChatService>();

            chatService.Setup(x => x.BroadcastMessageOnChannel(It.IsAny <string>()));
            var cmd = new GuessGameCommand()
            {
                ArgumentsAsList = new List <string>()
                {
                    "1:24",
                },
                ChatUser = new ChatUser()
                {
                    DisplayName   = "User1",
                    Username      = "******",
                    IsBroadcaster = true
                }
            };

            sut.Guess(chatService.Object, cmd);
            sut.Close(chatService.Object, cmd);
            cmd = new GuessGameCommand()
            {
                ArgumentsAsList = new List <string>()
                {
                    "reset",
                    "invalid",
                },
                ChatUser = new ChatUser()
                {
                    DisplayName   = "User1",
                    Username      = "******",
                    IsBroadcaster = true
                }
            };
            sut.Reset(chatService.Object, cmd);
            Assert.Equal(GuessGameState.NotStarted, sut.CurrentState());
            chatService.Verify(service => service.BroadcastMessageOnChannel(It.IsAny <string>()), Times.Once());
        }
Beispiel #13
0
        public void BroadcastTheUserGuess_WhenInClosedStateAndUserDidntGuess()
        {
            var sut = new GuessGame(GuessGameState.GuessesClosed);
            Mock <IChatService> chatService = new Mock <IChatService>();

            chatService.Setup(x => x.BroadcastMessageOnChannel(It.IsAny <string>()));
            var cmd = new GuessGameCommand()
            {
                ArgumentsAsList = new List <string>()
                {
                    "mine",
                },
                ChatUser = new ChatUser()
                {
                    DisplayName = "User1",
                    Username    = "******"
                }
            };

            sut.Mine(chatService.Object, cmd);
            chatService.Verify(service => service.BroadcastMessageOnChannel(It.Is <string>(s => s == "user1 has not guessed yet!")), Times.Once());
        }
Beispiel #14
0
        public void DoNothing_WhenInNotStartedState()
        {
            var sut = new GuessGame(GuessGameState.NotStarted);
            Mock <IChatService> chatService = new Mock <IChatService>();

            chatService.Setup(x => x.BroadcastMessageOnChannel(It.IsAny <string>()));
            var cmd = new GuessGameCommand()
            {
                ArgumentsAsList = new List <string>()
                {
                    "help",
                },
                ChatUser = new ChatUser()
                {
                    DisplayName = "User1",
                    Username    = "******"
                }
            };

            sut.Mine(chatService.Object, cmd);
            chatService.Verify(service => service.BroadcastMessageOnChannel(It.IsAny <string>()), Times.Never());
        }
Beispiel #15
0
        public void BroadCastTheGameIsTakingGuesses_WhenTakingGuesses_GivenUserIsNotBroadcasterOrModerator()
        {
            var sut = new GuessGame(GuessGameState.OpenTakingGuesses);
            Mock <IChatService> chatserviceMock = new Mock <IChatService>();

            chatserviceMock.Setup(x => x.BroadcastMessageOnChannel(It.IsAny <string>()));
            var cmd = new GuessGameCommand()
            {
                ArgumentsAsList = new List <string>()
                {
                    //"",
                },
                ChatUser = new ChatUser()
                {
                    DisplayName = "User1",
                    Username    = "******"
                }
            };

            sut.Help(chatserviceMock.Object, cmd);
            chatserviceMock.Verify(service => service.BroadcastMessageOnChannel(
                                       It.Is <string>(m => m == "The time-guessing game is currently taking guesses.  Guess a time with !guess 1:23  Your last guess will stand, and you can check your guess with !guess mine")), Times.Once);
        }
Beispiel #16
0
        public void BroadcastTheUserGuess_WhenInTakingGuessesState()
        {
            var sut = new GuessGame(GuessGameState.OpenTakingGuesses);
            Mock <IChatService> chatService = new Mock <IChatService>();

            chatService.Setup(x => x.BroadcastMessageOnChannel(It.IsAny <string>()));
            var cmd = new GuessGameCommand()
            {
                ArgumentsAsList = new List <string>()
                {
                    "1:23",
                },
                ChatUser = new ChatUser()
                {
                    DisplayName = "User1",
                    Username    = "******"
                }
            };

            sut.Guess(chatService.Object, cmd);
            sut.Mine(chatService.Object, cmd);
            chatService.Verify(service => service.BroadcastMessageOnChannel(It.Is <string>(s => s == "user1 guessed 00:01:23")), Times.Once());
        }
Beispiel #17
0
        public void WhisperTheGameIsNotStarted_WhenCommandIsTriggeredWihoutArgs_GivenStateIsNotStarted()
        {
            var sut = new GuessGame();
            Mock <IChatService> chatserviceMock = new Mock <IChatService>();

            chatserviceMock.Setup(x => x.WhisperMessage(It.IsAny <string>(), It.IsAny <string>()));
            var cmd = new GuessGameCommand()
            {
                ArgumentsAsList = new List <string>()
                {
                    //"",
                },
                ChatUser = new ChatUser()
                {
                    DisplayName = "User1",
                    Username    = "******"
                }
            };

            sut.Help(chatserviceMock.Object, cmd);
            chatserviceMock.Verify(service => service.WhisperMessage(
                                       It.Is <string>(u => u == "User1"),
                                       It.Is <string>(m => m == "The time-guessing game is not currently running.  To open the game for guesses, execute !guess open")), Times.Once);
        }