Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions blackjackbot/commands/game/commands.py
Original file line number Diff line number Diff line change
Expand Up @@ -121,12 +121,12 @@ def join_callback(update, context):

# If players are full, replace join keyboard with start keyboard
if len(game.players) >= game.MAX_PLAYERS:
update.effective_message.edit_reply_markup(reply_markup=get_start_keyboard(lang_id))
update.effective_message.edit_reply_markup(reply_markup=get_start_keyboard(game.id, lang_id))
except errors.GameAlreadyRunningException:
remove_inline_keyboard(update, context)
update.callback_query.answer(translator("mp_game_already_begun_callback"))
except errors.MaxPlayersReachedException:
update.effective_message.edit_reply_markup(reply_markup=get_start_keyboard(lang_id))
update.effective_message.edit_reply_markup(reply_markup=get_start_keyboard(game.id, lang_id))
update.callback_query.answer(translator("mp_max_players_callback"))
except errors.PlayerAlreadyExistingException:
update.callback_query.answer(translator("mp_already_joined_callback"))
Expand Down
10 changes: 8 additions & 2 deletions blackjackbot/commands/util/functions.py
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,13 @@ def get_join_keyboard(game_id, lang_id):
return InlineKeyboardMarkup(inline_keyboard=[[join_button, start_button]])


def get_start_keyboard(lang_id):
def get_start_keyboard(game_id, lang_id):
"""
Generates a keyboard with only a start button, translated into the given language
:param game_id: A unique identifier for each game
:param lang_id: The language identifier for a specific chat
:return:
"""
translator = Translator(lang_id)
start_button = InlineKeyboardButton(text=translator("inline_keyboard_start"), callback_data="start")
start_button = InlineKeyboardButton(text=translator("inline_keyboard_start"), callback_data="start_{}".format(game_id))
return InlineKeyboardMarkup(inline_keyboard=[[start_button]])
1 change: 1 addition & 0 deletions blackjackbot/commands/util/tests/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# -*- coding: utf-8 -*-
29 changes: 29 additions & 0 deletions blackjackbot/commands/util/tests/functions_test.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# -*- coding: utf-8 -*-
import unittest

from blackjackbot import start_callback_handler
from blackjackbot.commands.util import get_join_keyboard, get_start_keyboard


class CommandsUtilFunctionsTest(unittest.TestCase):

def test_start_keyboard_matches_start_handler(self):
"""The start button shown when a lobby is full must be handled by the start callback handler"""
game_id = 1234567
keyboard = get_start_keyboard(game_id, "en")
start_button = keyboard.inline_keyboard[0][0]

self.assertEqual("start_{}".format(game_id), start_button.callback_data)
self.assertTrue(start_callback_handler.pattern.match(start_button.callback_data))

def test_join_keyboard_start_button_matches_start_handler(self):
"""The start button of the join keyboard must be handled by the start callback handler"""
game_id = 7654321
keyboard = get_join_keyboard(game_id, "en")
start_button = keyboard.inline_keyboard[0][1]

self.assertTrue(start_callback_handler.pattern.match(start_button.callback_data))


if __name__ == '__main__':
unittest.main()
Loading