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