def create_schedules_spreadsheet(tournament_id, bracket_id, schedules_spreadsheet): schedules_spreadsheet_data = requests_wrapper( "post", TOSURNAMENT_URL + "tournaments/" + str(tournament_id) + "/brackets/" + str(bracket_id) + "/schedules_spreadsheet", data=schedules_spreadsheet.get_table_dict(), ) return SchedulesSpreadsheet(**schedules_spreadsheet_data)
async def test_set_schedules_spreadsheet_range_time(mocker): """Sets the schedules spreasheet's range time.""" cog, mock_bot, schedules_spreadsheet = init_mocks() range_time = "A" assert schedules_spreadsheet.range_time != range_time await cog.set_schedules_spreadsheet_range_time( cog, tosurnament_mock.CtxMock(mock_bot), cell_range=range_time) mock_bot.session.update.assert_called_once_with( tosurnament_mock.Matcher(SchedulesSpreadsheet(range_time=range_time)))
async def test_set_schedules_spreadsheet_staff_is_range(mocker): """Sets the schedules spreasheet's staff can be in multiple cells.""" cog, mock_bot, schedules_spreadsheet = init_mocks() use_range = True assert schedules_spreadsheet.use_range != use_range await cog.set_schedules_spreadsheet_staff_is_range( cog, tosurnament_mock.CtxMock(mock_bot), use_range=use_range) mock_bot.session.update.assert_called_once_with( tosurnament_mock.Matcher(SchedulesSpreadsheet(use_range=use_range)))
async def test_set_schedules_spreadsheet_sheet_name(mocker): """Sets the schedules spreasheet's sheet name.""" cog, mock_bot, schedules_spreadsheet = init_mocks() sheet_name = "a sheet name" assert schedules_spreadsheet.sheet_name != sheet_name await cog.set_schedules_spreadsheet_sheet_name( cog, tosurnament_mock.CtxMock(mock_bot), sheet_name=sheet_name) mock_bot.session.update.assert_called_once_with( tosurnament_mock.Matcher(SchedulesSpreadsheet(sheet_name=sheet_name)))
async def test_set_schedules_spreadsheet_date_format(mocker): """Sets the schedules spreasheet's date format.""" cog, mock_bot, schedules_spreadsheet = init_mocks() date_format = "%d %m" assert schedules_spreadsheet.date_format != date_format await cog.set_schedules_spreadsheet_date_format( cog, tosurnament_mock.CtxMock(mock_bot), date_format=date_format) mock_bot.session.update.assert_called_once_with( tosurnament_mock.Matcher( SchedulesSpreadsheet(date_format=date_format)))
def post(self, tournament_id, bracket_id): bracket = (db.query(Bracket).where( Bracket.tournament_id == tournament_id).where( Bracket.id == bracket_id).first()) if not bracket: raise exceptions.NotFound() body = request.json if not body or not body["spreadsheet_id"]: raise exceptions.MissingRequiredInformation() body["spreadsheet_id"] = spreadsheet_api.extract_spreadsheet_id( body["spreadsheet_id"]) spreadsheet = SchedulesSpreadsheet(**body) db.add(spreadsheet) bracket.schedules_spreadsheet_id = spreadsheet.id db.update(bracket) current_app.logger.debug( "The schedules spreadsheet {0} for the bracket {1} has been created successfully." .format(spreadsheet.id, bracket_id)) return spreadsheet.get_api_dict(), 201
def get_schedules_spreadsheet(tournament_id, bracket_id, schedules_spreadsheet_id): schedules_spreadsheet_data = requests_wrapper( "get", TOSURNAMENT_URL + "tournaments/" + str(tournament_id) + "/brackets/" + str(bracket_id) + "/schedules_spreadsheet/" + str(schedules_spreadsheet_id), ) if schedules_spreadsheet_data is None: return None return SchedulesSpreadsheet(**schedules_spreadsheet_data)
async def test_copy_bracket(mocker): """Copies a bracket settings to another one.""" mock_bot = tosurnament_mock.BotMock() mock_bot.session.add_stub(Tournament(id=1, current_bracket_id=1, guild_id=tosurnament_mock.DEFAULT_GUILD_MOCK.id)) mock_bot.session.add_stub( Bracket(id=1, tournament_id=1, schedules_spreadsheet_id=1, players_spreadsheet_id=1, post_result_channel_id=1) ) sheet_name = "a sheet name" schedules_spreadsheet = SchedulesSpreadsheet( id=1, sheet_name=sheet_name + " s", range_match_id="B2:B", range_team1="C2:C" ) mock_bot.session.add_stub(schedules_spreadsheet) mock_bot.session.add_stub(Bracket(id=2, tournament_id=1, schedules_spreadsheet_id=2)) mock_bot.session.add_stub( SchedulesSpreadsheet(id=2, sheet_name=sheet_name, range_match_id="A1:A", range_score_team1="B1:B") ) cog = tosurnament_mock.mock_cog(bracket_module.get_class(mock_bot)) mock_ctx = tosurnament_mock.CtxMock(mock_bot) await cog.copy_bracket(cog, mock_ctx, 1, 2) assert len(mock_bot.session.tables[Bracket.__tablename__]) == 2 assert mock_bot.session.tables[Bracket.__tablename__][1].post_result_channel_id == 1 assert len(mock_bot.session.tables[SchedulesSpreadsheet.__tablename__]) == 2 assert mock_bot.session.tables[SchedulesSpreadsheet.__tablename__][1] != tosurnament_mock.Matcher( schedules_spreadsheet ) schedules_spreadsheet.sheet_name = sheet_name assert mock_bot.session.tables[SchedulesSpreadsheet.__tablename__][1] == tosurnament_mock.Matcher( schedules_spreadsheet ) assert PlayersSpreadsheet.__tablename__ not in mock_bot.session.tables players_spreadsheet = PlayersSpreadsheet(id=1, range_team="A1:A") mock_bot.session.add_stub(players_spreadsheet) await cog.copy_bracket(cog, mock_ctx, 1, 2) assert len(mock_bot.session.tables[PlayersSpreadsheet.__tablename__]) == 2 assert mock_bot.session.tables[PlayersSpreadsheet.__tablename__][1] == tosurnament_mock.Matcher(players_spreadsheet)
def init_mocks(): mock_bot = tosurnament_mock.BotMock() mock_bot.session.add_stub( Tournament(id=1, current_bracket_id=1, guild_id=tosurnament_mock.DEFAULT_GUILD_MOCK.id)) mock_bot.session.add_stub( Bracket(id=1, tournament_id=1, schedules_spreadsheet_id=1)) schedules_spreadsheet = SchedulesSpreadsheet(id=1) mock_bot.session.add_stub(schedules_spreadsheet) cog = tosurnament_mock.mock_cog(module_to_test.get_class(mock_bot)) return cog, mock_bot, schedules_spreadsheet
async def test_set_schedules_spreadsheet(mocker): """Sets bracket spreadsheets.""" mock_bot = tosurnament_mock.BotMock() mock_bot.session.add_stub( Tournament(id=1, current_bracket_id=1, guild_id=tosurnament_mock.DEFAULT_GUILD_MOCK.id)) mock_bot.session.add_stub(Bracket(id=1, tournament_id=1)) cog = tosurnament_mock.mock_cog(module_to_test.get_class(mock_bot)) mock_ctx = tosurnament_mock.CtxMock(mock_bot) spreadsheet_id = "abcd1234" sheet_name = "a sheet name" await cog.set_schedules_spreadsheet(cog, mock_ctx, spreadsheet_id, sheet_name=sheet_name) update_expected = [ mocker.call( tosurnament_mock.Matcher( Bracket(tournament_id=1, schedules_spreadsheet_id=1))), mocker.call( tosurnament_mock.Matcher( SchedulesSpreadsheet(spreadsheet_id=spreadsheet_id, sheet_name=sheet_name))), ] assert mock_bot.session.update.call_args_list == update_expected await cog.set_schedules_spreadsheet(cog, mock_ctx, spreadsheet_id, sheet_name="") update_expected = [ mocker.call( tosurnament_mock.Matcher( SchedulesSpreadsheet(spreadsheet_id=spreadsheet_id, sheet_name=sheet_name))), ] assert mock_bot.session.update.call_args_list[2:] == update_expected
async def test_set_schedules_spreadsheet_values(mocker): """Sets schedules spreadsheet values.""" mock_bot = tosurnament_mock.BotMock() mock_bot.session.add_stub( Tournament(id=1, current_bracket_id=1, guild_id=tosurnament_mock.DEFAULT_GUILD_MOCK.id)) mock_bot.session.add_stub( Bracket(id=1, tournament_id=1, schedules_spreadsheet_id=1)) cog = tosurnament_mock.mock_cog(module_to_test.get_class(mock_bot)) mock_ctx = tosurnament_mock.CtxMock(mock_bot) sheet_name = "a sheet name" with pytest.raises(base.NoSpreadsheet): await cog.set_schedules_spreadsheet_values(mock_ctx, {"sheet_name": sheet_name}) schedules_spreadsheet = SchedulesSpreadsheet(id=1) mock_bot.session.add_stub(schedules_spreadsheet) assert schedules_spreadsheet.sheet_name != sheet_name await cog.set_schedules_spreadsheet_values(mock_ctx, {"sheet_name": sheet_name}) mock_bot.session.update.assert_called_once_with( tosurnament_mock.Matcher(SchedulesSpreadsheet(sheet_name=sheet_name)))
async def test_set_schedules_spreadsheet_range_value(mocker): """Sets schedules spreadsheet range value.""" cog, mock_bot, schedules_spreadsheet = init_mocks() mock_ctx = tosurnament_mock.CtxMock(mock_bot) range_name = "range_match_id" range_value = "A" mocker.patch(MODULE_TO_TEST + ".spreadsheet.check_range", mocker.Mock(return_value=False)) with pytest.raises(commands.UserInputError): await cog.set_schedules_spreadsheet_range_value( mock_ctx, range_name, range_value) mocker.patch(MODULE_TO_TEST + ".spreadsheet.check_range", mocker.Mock(return_value=True)) assert schedules_spreadsheet.range_match_id != range_value await cog.set_schedules_spreadsheet_range_value(mock_ctx, range_name, range_value) mock_bot.session.update.assert_called_once_with( tosurnament_mock.Matcher( SchedulesSpreadsheet(range_match_id=range_value)))
async def set_schedules_spreadsheet(self, ctx, spreadsheet_id: str, *, sheet_name: str = ""): """Sets the schedules spreadsheet.""" tournament = self.get_tournament(ctx.guild.id) bracket = tournament.current_bracket spreadsheet_id = spreadsheet_api.extract_spreadsheet_id(spreadsheet_id) schedules_spreadsheet = bracket._schedules_spreadsheet if not schedules_spreadsheet: schedules_spreadsheet = tosurnament_api.create_schedules_spreadsheet( tournament.id, bracket.id, SchedulesSpreadsheet(spreadsheet_id=spreadsheet_id, sheet_name=sheet_name)) else: schedules_spreadsheet.spreadsheet_id = spreadsheet_id if sheet_name: schedules_spreadsheet.sheet_name = sheet_name tosurnament_api.update_schedules_spreadsheet( tournament.id, bracket.id, schedules_spreadsheet) await self.send_reply(ctx, "success", schedules_spreadsheet.spreadsheet_id)