class TestResolveInvalidHandler(unittest.TestCase): def setUp(self): random = RandomMock() self.slack_client = MockSlackClient() self.game_state = GameState(self.slack_client, random_func=random, chat=Chat(self.slack_client, "chat_chanel"), channel="chat_chanel") self.handler = ResolveInvalidHandler(self.game_state) self._add_players(self.slack_client, self.game_state) def _add_players(self, slack_client, game_state): manager = game_state.team_manager manager.add_player(Player("p1", slack_client)) # red team manager.add_player(Player("p2", slack_client)) manager.add_player(Player("p3", slack_client)) # blue team manager.add_player(Player("p4", slack_client)) manager.add_player(Player("p5", slack_client)) manager.pick_teams() def test_invalid_word(self): data = {"text": "foo", "channel": "p3_dm"} self.handler.process(data) self.assertEqual("Invalid! Please try again...", self.slack_client.api_calls[-1][1]) def test_process(self): data = {"text": "band", "channel": "p3_dm"} self.handler.process(data) self.assertEqual("Still Blue Team's turn. Getting next clue...", self.slack_client.api_calls[-1][1]) self.assertTrue(isinstance(self.game_state.handler, ClueInputHandler))
def setUp(self): random = RandomMock() self.slack_client = MockSlackClient() self.game_state = GameState(self.slack_client, random_func=random, chat=Chat(self.slack_client, "chat_chanel"), channel="chat_chanel") self.handler = ResolveInvalidHandler(self.game_state) self._add_players(self.slack_client, self.game_state)
class GameState: def __init__(self, slack_client, random_func=None, chat=None, channel=None): self.chat = chat self.channel = channel self.team_manager = TeamManager(self.chat, random_func=random_func) self.slack_client = slack_client self.handler = PendingStartHandler(self) self.board = Board(self.chat, random_func=random_func) self.clue_input_handler = None self.rand_func = random_func self.clue_number = None self.previous_handler = None if not self.rand_func: self.random_func = random def pending_start_complete(self): self.handler = GenerateGameHandler(self) def generate_game_complete(self): if not self.clue_input_handler: self.clue_input_handler = ClueInputHandler(self) self.handler = self.clue_input_handler def clue_input_complete(self, clue_number): self.clue_number = clue_number self.handler = GuessInputHandler(self, clue_number) def guess_input_complete(self): self.generate_game_complete() def interrupt_handler(self, handler): self.previous_handler = self.handler self.handler = handler def restore_handler(self): self.handler = self.previous_handler self.previous_handler = None def invalid_handler_complete(self): self.previous_handler = None self.handler = ResolveInvalidHandler(self) self.handler.start() def resolve_invalid_handler_complete(self): self.generate_game_complete()
def __init__(self, slack_client, random_func=None, chat=None, channel=None): self.chat = chat self.channel = channel self.team_manager = TeamManager(self.chat, random_func=random_func) self.slack_client = slack_client self.handler = PendingStartHandler(self) self.board = Board(self.chat, random_func=random_func) self.clue_input_handler = None self.rand_func = random_func self.clue_number = None self.previous_handler = None if not self.rand_func: self.random_func = random
def invalid_handler_complete(self): self.previous_handler = None self.handler = ResolveInvalidHandler(self) self.handler.start()
def clue_input_complete(self, clue_number): self.clue_number = clue_number self.handler = GuessInputHandler(self, clue_number)
def pending_start_complete(self): self.handler = GenerateGameHandler(self)