Example #1
0
async def test_reaction_on_end_tournament_message(mocker):
    """Sends a message to react on in order to end the tournament."""
    mock_bot = tosurnament_mock.BotMock()
    cog = tosurnament_mock.mock_cog(guild_owner.get_class(mock_bot))

    mock_bot.session.add_stub(
        Tournament(id=1, guild_id=tosurnament_mock.GUILD_ID))
    mock_bot.session.add_stub(
        Bracket(tournament_id=1,
                schedules_spreadsheet_id=1,
                players_spreadsheet_id=1))
    mock_bot.session.add_stub(SchedulesSpreadsheet(id=1))
    mock_bot.session.add_stub(PlayersSpreadsheet(id=1))
    mock_bot.session.add_stub(Bracket(tournament_id=1))
    mock_bot.session.add_stub(
        Bracket(tournament_id=1,
                schedules_spreadsheet_id=42,
                players_spreadsheet_id=42))
    mock_bot.session.add_stub(SchedulesSpreadsheet(id=42))
    mock_bot.session.add_stub(PlayersSpreadsheet(id=42))
    mock_bot.session.add_stub(
        Bracket(tournament_id=1, schedules_spreadsheet_id=43))
    mock_bot.session.add_stub(RescheduleMessage(tournament_id=1))
    mock_bot.session.add_stub(RescheduleMessage(tournament_id=1))
    mock_bot.session.add_stub(StaffRescheduleMessage(tournament_id=1))
    mock_bot.session.add_stub(StaffRescheduleMessage(tournament_id=1))
    mock_bot.session.add_stub(EndTournamentMessage(message_id=MESSAGE_ID))

    mock_bot.session.add_stub(Tournament(id=2))
    mock_bot.session.add_stub(
        Bracket(tournament_id=2,
                schedules_spreadsheet_id=2,
                players_spreadsheet_id=2))
    mock_bot.session.add_stub(SchedulesSpreadsheet(id=2))
    mock_bot.session.add_stub(PlayersSpreadsheet(id=2))
    mock_bot.session.add_stub(RescheduleMessage(tournament_id=2))

    await cog.reaction_on_end_tournament_message(
        MESSAGE_ID,
        tosurnament_mock.EmojiMock("✅"),
        tosurnament_mock.GuildMock(tosurnament_mock.GUILD_ID),
        tosurnament_mock.ChannelMock(),
        tosurnament_mock.UserMock(user_id=tosurnament_mock.GuildMock.OWNER_ID),
    )
    cog.send_reply.assert_called_with(mocker.ANY, mocker.ANY, "success")

    assert len(mock_bot.session.tables[Tournament.__tablename__]) == 1
    assert len(mock_bot.session.tables[Bracket.__tablename__]) == 1
    assert len(
        mock_bot.session.tables[SchedulesSpreadsheet.__tablename__]) == 1
    assert len(mock_bot.session.tables[PlayersSpreadsheet.__tablename__]) == 1
    assert len(mock_bot.session.tables[RescheduleMessage.__tablename__]) == 1
    assert len(
        mock_bot.session.tables[StaffRescheduleMessage.__tablename__]) == 0
    assert len(
        mock_bot.session.tables[EndTournamentMessage.__tablename__]) == 0
Example #2
0
    async def test_get_a_bracket(self):
        """Sets a bracket as current bracket."""
        bot_mock = tosurnament_mock.BotMock()
        bot_mock.session.add_stub(Tournament(current_bracket_id=1))
        bot_mock.session.add_stub(Bracket(id=1, name=BRACKET_NAME))
        bot_mock.session.add_stub(Bracket(id=2, name=BRACKET_NAME_2))
        cog = tosurnament_mock.mock_cog(tournament.get_class(bot_mock))

        await cog.get_bracket(cog, tosurnament_mock.CtxMock(bot_mock), number=2)
        bot_mock.session.update.assert_called_once_with(tosurnament_mock.Matcher(Tournament(current_bracket_id=2)))
        cog.send_reply.assert_called_once_with(mock.ANY, mock.ANY, "success", BRACKET_NAME_2)
Example #3
0
    async def test_get_bracket(self):
        """Shows all brackets."""
        bot_mock = tosurnament_mock.BotMock()
        bot_mock.session.add_stub(Tournament(current_bracket_id=1))
        bot_mock.session.add_stub(Bracket(id=1, name=BRACKET_NAME))
        bot_mock.session.add_stub(Bracket(id=2, name=BRACKET_NAME_2))
        cog = tosurnament_mock.mock_cog(tournament.get_class(bot_mock))

        expected_output = "1: `" + BRACKET_NAME + "` (current bracket)\n"
        expected_output += "2: `" + BRACKET_NAME_2 + "`\n"

        await cog.get_bracket(cog, tosurnament_mock.CtxMock(bot_mock))
        cog.send_reply.assert_called_once_with(mock.ANY, mock.ANY, "default", expected_output)
Example #4
0
    async def test_set_bracket_values(self):
        """Puts the input values into the corresponding bracket."""
        bot_mock = tosurnament_mock.BotMock()
        bot_mock.session.add_stub(Tournament())
        bot_mock.session.add_stub(Bracket(name=BRACKET_NAME))
        cog = tosurnament_mock.mock_cog(bracket.get_class(bot_mock))

        await cog.set_bracket_values(tosurnament_mock.CtxMock(bot_mock),
                                     {"name": BRACKET_NAME_2})
        bot_mock.session.update.assert_called_once_with(
            tosurnament_mock.Matcher(Bracket(name=BRACKET_NAME_2)))
        cog.send_reply.assert_called_once_with(mock.ANY, mock.ANY, "success",
                                               BRACKET_NAME_2)
Example #5
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.GUILD_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))
    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.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)
Example #6
0
async def test_copy_bracket_wrong_index(mocker):
    """Copies a bracket settings to another one, but input indexes are wrong."""
    mock_bot = tosurnament_mock.BotMock()
    mock_bot.session.add_stub(
        Tournament(id=1, guild_id=tosurnament_mock.GUILD_ID))
    mock_bot.session.add_stub(Bracket(id=1, tournament_id=1))
    mock_bot.session.add_stub(Bracket(id=2, tournament_id=1))
    cog = tosurnament_mock.mock_cog(bracket.get_class(mock_bot))

    with pytest.raises(commands.UserInputError):
        await cog.copy_bracket(cog, tosurnament_mock.CtxMock(mock_bot), 1, 3)

    with pytest.raises(commands.UserInputError):
        await cog.copy_bracket(cog, tosurnament_mock.CtxMock(mock_bot), 0, 2)
Example #7
0
async def test_set_spreadsheet_values(mocker):
    """Sets spreadsheet values."""
    mock_bot = tosurnament_mock.BotMock()
    mock_bot.session.add_stub(
        Tournament(id=1,
                   current_bracket_id=1,
                   guild_id=tosurnament_mock.GUILD_ID))
    mock_bot.session.add_stub(
        Bracket(id=1,
                tournament_id=1,
                schedules_spreadsheet_id=1,
                players_spreadsheet_id=1))
    mock_bot.session.add_stub(SchedulesSpreadsheet(id=1))
    cog = tosurnament_mock.mock_cog(bracket.get_class(mock_bot))
    mock_ctx = tosurnament_mock.CtxMock(mock_bot)

    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)))

    with pytest.raises(base.NoSpreadsheet):
        await cog.set_players_spreadsheet_values(mock_ctx,
                                                 {"sheet_name": SHEET_NAME})

    mock_bot.session.add_stub(PlayersSpreadsheet(id=1))
    await cog.set_players_spreadsheet_values(mock_ctx,
                                             {"sheet_name": SHEET_NAME})
Example #8
0
 async def create_bracket(self, ctx, *, name: str):
     """Creates a bracket and sets it as current bracket (for bracket settings purpose)."""
     tournament = self.get_tournament(ctx.guild.id)
     bracket = Bracket(tournament_id=tournament.id, name=name)
     self.bot.session.add(bracket)
     tournament.current_bracket_id = bracket.id
     self.bot.session.update(tournament)
     await self.send_reply(ctx, ctx.command.name, "success", name)
Example #9
0
    async def test_get_a_bracket_that_does_not_exist(self):
        """Sets a bracket as current bracket but it does not exist."""
        bot_mock = tosurnament_mock.BotMock()
        bot_mock.session.add_stub(Tournament())
        bot_mock.session.add_stub(Bracket(name=BRACKET_NAME))
        cog = tosurnament_mock.mock_cog(tournament.get_class(bot_mock))

        with self.assertRaises(discord.ext.commands.UserInputError):
            await cog.get_bracket(cog, tosurnament_mock.CtxMock(bot_mock), number=0)
Example #10
0
async def test_get_a_bracket(mocker):
    """Sets a bracket as current bracket."""
    mock_bot = tosurnament_mock.BotMock()
    mock_bot.session.add_stub(
        Tournament(id=1,
                   guild_id=tosurnament_mock.GUILD_ID,
                   current_bracket_id=1))
    mock_bot.session.add_stub(Bracket(id=1, tournament_id=1,
                                      name=BRACKET_NAME))
    mock_bot.session.add_stub(
        Bracket(id=2, tournament_id=1, name=BRACKET_NAME_2))
    cog = tosurnament_mock.mock_cog(tournament.get_class(mock_bot))

    await cog.get_bracket(cog, tosurnament_mock.CtxMock(mock_bot), number=2)
    mock_bot.session.update.assert_called_once_with(
        tosurnament_mock.Matcher(Tournament(current_bracket_id=2)))
    cog.send_reply.assert_called_once_with(mocker.ANY, mocker.ANY, "success",
                                           BRACKET_NAME_2)
Example #11
0
async def test_set_challonge(mocker):
    """Sets the challonge."""
    mock_bot = tosurnament_mock.BotMock()
    mock_bot.session.add_stub(
        Tournament(id=1,
                   current_bracket_id=1,
                   guild_id=tosurnament_mock.GUILD_ID))
    mock_bot.session.add_stub(Bracket(id=1, tournament_id=1))
    cog = tosurnament_mock.mock_cog(bracket.get_class(mock_bot))

    await cog.set_challonge(cog,
                            tosurnament_mock.CtxMock(mock_bot),
                            challonge_tournament=CHALLONGE_ID_URL)
    mock_bot.session.update.assert_called_once_with(
        tosurnament_mock.Matcher(
            Bracket(tournament_id=1, challonge=CHALLONGE_ID)))
    cog.send_reply.assert_called_once_with(mocker.ANY, mocker.ANY, "success",
                                           CHALLONGE_ID)
Example #12
0
async def test_set_bracket_values(mocker):
    """Puts the input values into the corresponding bracket."""
    mock_bot = tosurnament_mock.BotMock()
    mock_bot.session.add_stub(
        Tournament(id=1,
                   current_bracket_id=1,
                   guild_id=tosurnament_mock.GUILD_ID))
    mock_bot.session.add_stub(Bracket(id=1, tournament_id=1,
                                      name=BRACKET_NAME))
    cog = tosurnament_mock.mock_cog(bracket.get_class(mock_bot))

    await cog.set_bracket_values(tosurnament_mock.CtxMock(mock_bot),
                                 {"name": BRACKET_NAME_2})
    mock_bot.session.update.assert_called_once_with(
        tosurnament_mock.Matcher(Bracket(tournament_id=1,
                                         name=BRACKET_NAME_2)))
    cog.send_reply.assert_called_once_with(mocker.ANY, mocker.ANY, "success",
                                           BRACKET_NAME_2)
Example #13
0
async def test_set_bracket_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.GUILD_ID))
    mock_bot.session.add_stub(Bracket(id=1, tournament_id=1))
    cog = tosurnament_mock.mock_cog(bracket.get_class(mock_bot))
    mock_ctx = tosurnament_mock.CtxMock(mock_bot)

    await cog.set_bracket_spreadsheet(mock_ctx, "players", SPREADSHEET_ID, "")
    update_expected = [
        mocker.call(
            tosurnament_mock.Matcher(
                Bracket(tournament_id=1, players_spreadsheet_id=1))),
        mocker.call(
            tosurnament_mock.Matcher(
                PlayersSpreadsheet(spreadsheet_id=SPREADSHEET_ID))),
    ]
    assert mock_bot.session.update.call_args_list == update_expected
    await cog.set_bracket_spreadsheet(mock_ctx, "players", SPREADSHEET_ID,
                                      SHEET_NAME)
    update_expected = [
        mocker.call(
            tosurnament_mock.Matcher(
                PlayersSpreadsheet(spreadsheet_id=SPREADSHEET_ID,
                                   sheet_name=SHEET_NAME))),
    ]
    assert mock_bot.session.update.call_args_list[2:] == update_expected

    await cog.set_bracket_spreadsheet(mock_ctx, "schedules", SPREADSHEET_ID,
                                      "")
    update_expected = [
        mocker.call(
            tosurnament_mock.Matcher(
                Bracket(tournament_id=1,
                        players_spreadsheet_id=1,
                        schedules_spreadsheet_id=1))),
        mocker.call(
            tosurnament_mock.Matcher(
                SchedulesSpreadsheet(spreadsheet_id=SPREADSHEET_ID))),
    ]
    assert mock_bot.session.update.call_args_list[3:] == update_expected
Example #14
0
async def test_get_a_bracket_that_does_not_exist():
    """Sets a bracket as current bracket but it does not exist."""
    mock_bot = tosurnament_mock.BotMock()
    mock_bot.session.add_stub(
        Tournament(id=1, guild_id=tosurnament_mock.GUILD_ID))
    mock_bot.session.add_stub(Bracket(tournament_id=1, name=BRACKET_NAME))
    cog = tosurnament_mock.mock_cog(tournament.get_class(mock_bot))

    with pytest.raises(discord.ext.commands.UserInputError):
        await cog.get_bracket(cog,
                              tosurnament_mock.CtxMock(mock_bot),
                              number=0)
Example #15
0
def post(handler, parameters, url_parameters, *ids_parameters):
    """POST method"""
    tournament_id = ids_parameters
    if not parameters:
        handler.logger.debug("Ignoring")
        handler.send_json("{}")
        return
    obj = Bracket()
    for key, value in parameters.items():
        if key in obj.__dict__:
            setattr(obj, key, value)
    setattr(obj, "tournament_id", tournament_id)
    obj = handler.session.add(obj)
    handler.logger.debug("Created successfully")
    handler.send_object(obj)
Example #16
0
async def test_reaction_on_end_tournament_message_refuse(mocker):
    """Sends a message to react on in order to end the tournament."""
    mock_bot = tosurnament_mock.BotMock()
    cog = tosurnament_mock.mock_cog(guild_owner.get_class(mock_bot))

    mock_bot.session.add_stub(Tournament(guild_id=tosurnament_mock.GUILD_ID))
    mock_bot.session.add_stub(Bracket())
    mock_bot.session.add_stub(EndTournamentMessage(message_id=MESSAGE_ID))
    await cog.reaction_on_end_tournament_message(
        MESSAGE_ID,
        tosurnament_mock.EmojiMock("❎"),
        tosurnament_mock.GuildMock(tosurnament_mock.GUILD_ID),
        tosurnament_mock.ChannelMock(),
        tosurnament_mock.UserMock(user_id=tosurnament_mock.GuildMock.OWNER_ID),
    )
    cog.send_reply.assert_called_with(mocker.ANY, mocker.ANY, "refused")
Example #17
0
    async def test_create_tournament(self):
        """Creates a tournament."""
        bot_mock = tosurnament_mock.BotMock()
        cog = tosurnament_mock.mock_cog(guild_owner.get_class(bot_mock))

        await cog.create_tournament(cog, tosurnament_mock.CtxMock(bot_mock),
                                    TOURNAMENT_ACRONYM, TOURNAMENT_NAME)
        assert bot_mock.session.update.call_count == 1
        tournament_matcher = tosurnament_mock.Matcher(
            Tournament(acronym=TOURNAMENT_ACRONYM,
                       name=TOURNAMENT_NAME,
                       current_bracket_id=1), )
        bracket_matcher = tosurnament_mock.Matcher(
            Bracket(tournament_id=1, name=TOURNAMENT_NAME))
        expected = [mock.call(tournament_matcher), mock.call(bracket_matcher)]
        assert bot_mock.session.add.call_args_list == expected
        cog.send_reply.assert_called_with(mock.ANY, mock.ANY, "success",
                                          TOURNAMENT_ACRONYM, TOURNAMENT_NAME,
                                          TOURNAMENT_NAME)
Example #18
0
async def test_remove_match_to_ignore(mocker):
    """Removes a match to ignore."""
    MATCH_ID_1 = "T1-1"
    MATCH_ID_2 = "t1-2"
    MATCH_ID_3 = "T1-3"

    mock_bot = tosurnament_mock.BotMock()
    mock_bot.session.add_stub(
        Tournament(
            id=1,
            guild_id=tosurnament_mock.GUILD_ID,
            matches_to_ignore=MATCH_ID_1 + "\n" + MATCH_ID_3,
            current_bracket_id=1,
            staff_channel_id=tosurnament_mock.ChannelMock.STAFF_CHANNEL_ID,
        ))
    mock_bot.session.add_stub(
        Bracket(id=1, tournament_id=1, schedules_spreadsheet_id=1))
    mock_bot.session.add_stub(
        SchedulesSpreadsheet(id=1,
                             spreadsheet_id="single",
                             sheet_name="Tier 1"))

    cog = tosurnament_mock.mock_cog(tournament.get_class(mock_bot))

    await cog.remove_match_to_ignore(cog, tosurnament_mock.CtxMock(mock_bot),
                                     MATCH_ID_2, MATCH_ID_3)
    assert mock_bot.session.tables[
        Tournament.__tablename__][0].matches_to_ignore == MATCH_ID_1
    expected_replies = [
        mocker.call(mocker.ANY, mocker.ANY, "success", MATCH_ID_1),
        mocker.call(
            tosurnament_mock.ChannelMock(
                tosurnament_mock.ChannelMock.STAFF_CHANNEL_ID),
            mocker.ANY,
            "to_not_ignore",
            mocker.ANY,
            MATCH_ID_3,
        ),
    ]
    assert cog.send_reply.call_args_list == expected_replies
Example #19
0
    async def copy_bracket(self, ctx, index_from: int, index_to: int):
        """Copies the settings of a bracket to another one."""
        tournament = self.get_tournament(ctx.guild.id)
        brackets = tournament.brackets
        if index_from > 0 and index_from <= len(brackets) and index_to > 0 and index_to <= len(brackets):
            bracket_from = brackets[index_from - 1]
            bracket_to = brackets[index_to - 1]
            bracket_to.post_result_channel_id = bracket_from.post_result_channel_id
            bracket_to.current_round = bracket_from.current_round

            for spreadsheet_type in Bracket.get_spreadsheet_types().keys():
                spreadsheet_from = bracket_from.get_spreadsheet_from_type(spreadsheet_type)
                if spreadsheet_from:
                    spreadsheet_to = bracket_to.get_spreadsheet_from_type(spreadsheet_type)
                    if not spreadsheet_to:
                        spreadsheet_to = bracket_to.create_spreadsheet_from_type(self.bot, spreadsheet_type)
                    spreadsheet_from.copy_to(spreadsheet_to)
                    self.bot.session.update(spreadsheet_to)

            await self.send_reply(ctx, ctx.command.name, "success", bracket_from.name, bracket_to.name)
            return
        raise commands.UserInputError()
Example #20
0
async def test_add_match_to_ignore(mocker):
    """Adds a match to ignore."""
    MATCH_ID_1 = "T1-1"
    MATCH_ID_2 = "t1-2"
    MATCH_ID_3 = "T1-3"
    INVALID_MATCH_ID = "Invalid"

    mock_bot = tosurnament_mock.BotMock()
    mock_bot.session.add_stub(
        Tournament(id=1,
                   guild_id=tosurnament_mock.GUILD_ID,
                   matches_to_ignore=MATCH_ID_3,
                   current_bracket_id=1))
    mock_bot.session.add_stub(
        Bracket(id=1, tournament_id=1, schedules_spreadsheet_id=1))
    mock_bot.session.add_stub(
        SchedulesSpreadsheet(id=1,
                             spreadsheet_id="single",
                             sheet_name="Tier 1"))

    cog = tosurnament_mock.mock_cog(tournament.get_class(mock_bot))

    await cog.add_match_to_ignore(cog, tosurnament_mock.CtxMock(mock_bot),
                                  MATCH_ID_1, MATCH_ID_2, INVALID_MATCH_ID)
    assert mock_bot.session.tables[
        Tournament.__tablename__][0].matches_to_ignore == "\n".join(
            [MATCH_ID_1, MATCH_ID_2.upper(), MATCH_ID_3])
    expected_replies = [
        mocker.call(mocker.ANY, mocker.ANY, "success",
                    " ".join([MATCH_ID_1,
                              MATCH_ID_2.upper(), MATCH_ID_3])),
        mocker.call(mocker.ANY, mocker.ANY, "not_found",
                    INVALID_MATCH_ID.lower()),
        mocker.call(mocker.ANY, mocker.ANY, "to_ignore", mocker.ANY,
                    MATCH_ID_1),
        mocker.call(mocker.ANY, mocker.ANY, "to_ignore", mocker.ANY,
                    MATCH_ID_2.upper()),
    ]
    assert cog.send_reply.call_args_list == expected_replies
Example #21
0
async def test_create_tournament_with_bracket_name(mocker):
    """Creates a tournament with a specified bracket name."""
    mock_bot = tosurnament_mock.BotMock()
    cog = tosurnament_mock.mock_cog(guild_owner.get_class(mock_bot))

    await cog.create_tournament(
        cog,
        tosurnament_mock.CtxMock(mock_bot),
        TOURNAMENT_ACRONYM,
        TOURNAMENT_NAME,
        BRACKET_NAME,
    )
    assert mock_bot.session.update.call_count == 1
    tournament_matcher = tosurnament_mock.Matcher(
        Tournament(acronym=TOURNAMENT_ACRONYM,
                   name=TOURNAMENT_NAME,
                   current_bracket_id=1), )
    bracket_matcher = tosurnament_mock.Matcher(
        Bracket(tournament_id=1, name=BRACKET_NAME))
    expected = [mocker.call(tournament_matcher), mocker.call(bracket_matcher)]
    assert mock_bot.session.add.call_args_list == expected
    cog.send_reply.assert_called_with(mocker.ANY, mocker.ANY, "success",
                                      TOURNAMENT_ACRONYM, TOURNAMENT_NAME,
                                      BRACKET_NAME)
Example #22
0
 async def create_tournament(self,
                             ctx,
                             acronym: str,
                             name: str,
                             bracket_name: str = ""):
     """
     Creates a tournament.
     If a bracket name is not specified, the bracket takes the tournament's name as its name too.
     """
     guild_id = ctx.guild.id
     tournament = self.bot.session.query(Tournament).where(
         Tournament.guild_id == guild_id).first()
     if tournament:
         raise tosurnament.TournamentAlreadyCreated()
     tournament = Tournament(guild_id=guild_id, acronym=acronym, name=name)
     self.bot.session.add(tournament)
     if not bracket_name:
         bracket_name = name
     bracket = Bracket(tournament_id=tournament.id, name=bracket_name)
     self.bot.session.add(bracket)
     tournament.current_bracket_id = bracket.id
     self.bot.session.update(tournament)
     await self.send_reply(ctx, ctx.command.name, "success", acronym, name,
                           bracket_name)
Example #23
0
    async def test_set_bracket_spreadsheet(self):
        """Sets bracket spreadsheets."""
        bot_mock = tosurnament_mock.BotMock()
        bot_mock.session.add_stub(Tournament())
        bot_mock.session.add_stub(Bracket())
        cog = tosurnament_mock.mock_cog(bracket.get_class(bot_mock))

        await cog.set_bracket_spreadsheet(tosurnament_mock.CtxMock(bot_mock),
                                          "players", SPREADSHEET_ID, "")
        await cog.set_bracket_spreadsheet(tosurnament_mock.CtxMock(bot_mock),
                                          "schedules", SPREADSHEET_ID, "")
        # !To fix, but unittest is pretty crappy with this tbh
        # add_expected = [
        #     mock.call(tosurnament_mock.Matcher(PlayersSpreadsheet())),
        #     mock.call(tosurnament_mock.Matcher(SchedulesSpreadsheet())),
        # ]
        # bracket_matcher = tosurnament_mock.Matcher(Bracket(players_spreadsheet_id=1))
        # players_spreadsheet_matcher = tosurnament_mock.Matcher(
        #     PlayersSpreadsheet(spreadsheet_id=SPREADSHEET_ID)
        # )
        # bracket_matcher_2 = tosurnament_mock.Matcher(
        #     Bracket(players_spreadsheet_id=1, schedules_spreadsheet_id=1)
        # )
        # schedules_spreadsheet_matcher = tosurnament_mock.Matcher(
        #     SchedulesSpreadsheet(spreadsheet_id=SPREADSHEET_ID)
        # )
        # update_expected = [
        #     mock.call(bracket_matcher),
        #     mock.call(players_spreadsheet_matcher),
        #     mock.call(bracket_matcher_2),
        #     mock.call(schedules_spreadsheet_matcher),
        # ]
        # assert bot_mock.session.add.call_args_list == add_expected
        # assert bot_mock.session.update.call_args_list == update_expected
        assert bot_mock.session.add.call_count == 2
        assert bot_mock.session.update.call_count == 4