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 setUp(self): self.slack_client = MockSlackClient() self.game_state = GameState(self.slack_client) self.handler = PendingStartHandler(self.game_state)
class TestPendingStartHandler(unittest.TestCase): def setUp(self): self.slack_client = MockSlackClient() self.game_state = GameState(self.slack_client) self.handler = PendingStartHandler(self.game_state) def _start(self): data = {'text': START_COMMAND, 'channel': 'foo'} self.handler.process(data) def test_start(self): self._start() self.assertEquals('foo', self.game_state.channel) def test_players_join_success(self): self._start() data = {'text': JOIN_COMMAND, 'channel': 'foo', 'user': '******'} self.handler.process(data) data = {'text': JOIN_COMMAND, 'channel': 'foo', 'user': '******'} self.handler.process(data) data = {'text': JOIN_COMMAND, 'channel': 'foo', 'user': '******'} self.handler.process(data) data = {'text': JOIN_COMMAND, 'channel': 'foo', 'user': '******'} self.handler.process(data) self.assertEqual(4, len(self.game_state.team_manager.players)) last_api_call = self.slack_client.api_calls[-1] self.assertEquals("You have joined the game!", last_api_call[1]) def _count_down(self): self.handler.tick() last_api_call = self.slack_client.api_calls[-1] self.assertEquals("Starting Codenames game in 30 seconds. Reply `cn join` to play", last_api_call[1]) self.handler.tick() self.handler.tick() self.handler.tick() self.handler.tick() self.handler.tick() self.handler.tick() self.handler.tick() self.handler.tick() self.handler.tick() self.handler.tick() self.handler.tick() self.handler.tick() self.handler.tick() self.handler.tick() self.handler.tick() self.handler.tick() self.handler.tick() self.handler.tick() self.handler.tick() self.handler.tick() self.handler.tick() self.handler.tick() self.handler.tick() self.handler.tick() self.handler.tick() self.handler.tick() self.handler.tick() self.handler.tick() self.handler.tick() def test_players_join_fail(self): self._start() data = {'text': JOIN_COMMAND, 'channel': 'foo', 'user': '******'} self.handler.process(data) data = {'text': JOIN_COMMAND, 'channel': 'foo', 'user': '******'} self.handler.process(data) data = {'text': JOIN_COMMAND, 'channel': 'foo', 'user': '******'} self.handler.process(data) self._count_down() last_api_call = self.slack_client.api_calls[-1] self.assertEquals("Starting Codenames game in 1 seconds. Reply `cn join` to play", last_api_call[1]) caught_exception = False try: self.handler.tick() except GameEndException: caught_exception = True self.assertTrue(caught_exception) def test_players_join_success_start(self): self._start() data = {'text': JOIN_COMMAND, 'channel': 'foo', 'user': '******'} self.handler.process(data) data = {'text': JOIN_COMMAND, 'channel': 'foo', 'user': '******'} self.handler.process(data) data = {'text': JOIN_COMMAND, 'channel': 'foo', 'user': '******'} self.handler.process(data) data = {'text': JOIN_COMMAND, 'channel': 'foo', 'user': '******'} self.handler.process(data) self._count_down() self.handler.tick() self.assertTrue(isinstance(self.game_state.handler, GenerateGameHandler))
class TestPendingStartHandler(unittest.TestCase): def setUp(self): self.slack_client = MockSlackClient() self.game_state = GameState(self.slack_client) self.handler = PendingStartHandler(self.game_state) def _start(self): data = {'text': START_COMMAND, 'channel': 'foo'} self.handler.process(data) def test_start(self): self._start() self.assertEquals('foo', self.game_state.channel) def test_players_join_success(self): self._start() data = {'text': JOIN_COMMAND, 'channel': 'foo', 'user': '******'} self.handler.process(data) data = {'text': JOIN_COMMAND, 'channel': 'foo', 'user': '******'} self.handler.process(data) data = {'text': JOIN_COMMAND, 'channel': 'foo', 'user': '******'} self.handler.process(data) data = {'text': JOIN_COMMAND, 'channel': 'foo', 'user': '******'} self.handler.process(data) self.assertEqual(4, len(self.game_state.team_manager.players)) last_api_call = self.slack_client.api_calls[-1] self.assertEquals("You have joined the game!", last_api_call[1]) def _count_down(self): self.handler.tick() last_api_call = self.slack_client.api_calls[-1] self.assertEquals( "Starting Codenames game in 30 seconds. Reply `cn join` to play", last_api_call[1]) self.handler.tick() self.handler.tick() self.handler.tick() self.handler.tick() self.handler.tick() self.handler.tick() self.handler.tick() self.handler.tick() self.handler.tick() self.handler.tick() self.handler.tick() self.handler.tick() self.handler.tick() self.handler.tick() self.handler.tick() self.handler.tick() self.handler.tick() self.handler.tick() self.handler.tick() self.handler.tick() self.handler.tick() self.handler.tick() self.handler.tick() self.handler.tick() self.handler.tick() self.handler.tick() self.handler.tick() self.handler.tick() self.handler.tick() def test_players_join_fail(self): self._start() data = {'text': JOIN_COMMAND, 'channel': 'foo', 'user': '******'} self.handler.process(data) data = {'text': JOIN_COMMAND, 'channel': 'foo', 'user': '******'} self.handler.process(data) data = {'text': JOIN_COMMAND, 'channel': 'foo', 'user': '******'} self.handler.process(data) self._count_down() last_api_call = self.slack_client.api_calls[-1] self.assertEquals( "Starting Codenames game in 1 seconds. Reply `cn join` to play", last_api_call[1]) caught_exception = False try: self.handler.tick() except GameEndException: caught_exception = True self.assertTrue(caught_exception) def test_players_join_success_start(self): self._start() data = {'text': JOIN_COMMAND, 'channel': 'foo', 'user': '******'} self.handler.process(data) data = {'text': JOIN_COMMAND, 'channel': 'foo', 'user': '******'} self.handler.process(data) data = {'text': JOIN_COMMAND, 'channel': 'foo', 'user': '******'} self.handler.process(data) data = {'text': JOIN_COMMAND, 'channel': 'foo', 'user': '******'} self.handler.process(data) self._count_down() self.handler.tick() self.assertTrue( isinstance(self.game_state.handler, GenerateGameHandler))