Exemplo n.º 1
0
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)))
Exemplo n.º 6
0
 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
Exemplo n.º 7
0
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)
Exemplo n.º 8
0
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)