Exemple #1
0
    def test_cmd_policy_exception_for_player_too_short(self):
        admin_player = fake_player(123, "Admin Player")
        connected_players(admin_player)

        return_code = self.plugin.cmd_policy_exception(admin_player,
                                                       ["!except"],
                                                       minqlx.CHAT_CHANNEL)

        assert_that(return_code, is_(minqlx.RET_USAGE))
    def test_cmd_discordbot_reconnect_when_disconnected(self):
        when(self.discord).is_discord_logged_in().thenReturn(False)
        triggering_player = fake_player(1, "Triggering Player")
        chat_channel = mock(spec=minqlx.AbstractChannel, strict=False)
        self.plugin.cmd_discordbot(triggering_player, ["!discordbot", "reconnect"], chat_channel)

        verify(chat_channel).reply("Reconnecting to Discord...")
        verify(self.discord, times=0).stop()
        verify(self.discord).run()
Exemple #3
0
    def test_cmd_policy_exception_for_no_matching_player(self):
        admin_player = fake_player(123, "Admin Player")
        connected_players(admin_player)

        self.plugin.cmd_policy_exception(admin_player, ["!except", "except"],
                                         minqlx.CHAT_CHANNEL)

        assert_player_was_told(admin_player,
                               matches(".*Could not find player.*"))
Exemple #4
0
    def test_handle_team_switch_attempt_player_has_exception_to_join(self):
        switching_player = fake_player(123, "Joining Player")
        connected_players(switching_player)
        self.plugin.exceptions.add(switching_player.steam_id)

        return_code = self.plugin.handle_team_switch_attempt(
            switching_player, "spectator", "any")

        assert_that(return_code, is_(minqlx.RET_NONE))
Exemple #5
0
    def test_handle_team_switch_attempt_plugin_disabled(self):
        self.plugin.plugin_enabled = False
        switching_player = fake_player(123, "Joining Player")
        connected_players(switching_player)

        return_code = self.plugin.handle_team_switch_attempt(
            switching_player, "spectator", "any")

        assert_that(return_code, is_(minqlx.RET_NONE))
    def test_relay_team_chat_message_with_asterisks_in_playername(self):
        relay_channel = self.relay_teamchat_channel()

        player = fake_player(steam_id=1, name="*Chatting* player")
        minqlx_channel = ""

        self.discord.relay_team_chat_message(player, minqlx_channel, "QL is great!")

        assert_text_was_sent_to_discord_channel(relay_channel, r"**\*Chatting\* player**: QL is great!")
Exemple #7
0
    def test_handle_team_switch_attempt_no_balance_plugin(self):
        minqlx.Plugin._loaded_plugins.pop("balance")  # pylint: disable=protected-access
        switching_player = fake_player(123, "Joining Player")
        connected_players(switching_player)

        self.plugin.handle_team_switch_attempt(switching_player, "spectator",
                                               "any")

        assert_that(self.plugin.plugin_enabled, is_(False))
Exemple #8
0
    def test_handle_death_on_own_death_does_nothing(self):
        victim = fake_player(123, "Fragged Player", team="red")

        connected_players(victim)

        self.plugin.handle_death(victim, victim, {"MOD": "ROCKET"})

        assert_that(self.plugin.frag_log,
                    not_(contains_exactly(victim.steam_id)))  # type: ignore
    def test_relay_team_chat_message_simple_message(self):
        relay_channel = self.relay_teamchat_channel()

        player = fake_player(steam_id=1, name="Chatting player")
        minqlx_channel = ""

        self.discord.relay_team_chat_message(player, minqlx_channel, "QL is great!")

        assert_text_was_sent_to_discord_channel(relay_channel, "**Chatting player**: QL is great!")
Exemple #10
0
    def test_process_vote_player_votes_on_an_untracked_vote(self):
        self.setup_vote_in_progress()
        self.plugin.track_vote = False
        self.current_vote_count_is(1, 5)

        self.plugin.process_vote(fake_player(123, "Any Player"), False)

        assert_that(self.plugin.track_vote, is_(False))
        verify(Plugin, times=0).force_vote(any_)
Exemple #11
0
    def test_process_vote_current_vote_count_not_available(self):
        self.setup_vote_in_progress()
        self.plugin.track_vote = True
        when2(Plugin.current_vote_count).thenReturn(None)

        self.plugin.process_vote(fake_player(123, "Any Player"), False)

        assert_that(self.plugin.track_vote, is_(True))
        verify(Plugin, times=0).force_vote(any_)
Exemple #12
0
    def test_cmd_switch_plugin_moves_anonymous_players_to_spec(self):
        self.plugin.plugin_enabled = False
        reply_channel = mocked_channel()
        red_player = fake_player(123, "Red Player", "red")
        blue_player = fake_player(456, "Blue Player", "blue")
        connected_players(red_player, blue_player)
        self.setup_balance_playerprivacy([(red_player, "public"),
                                          (blue_player, "private")])

        self.plugin.cmd_switch_plugin(None, ["!policy"], reply_channel)

        assert_player_was_put_on(red_player, "spectator", times=0)
        assert_player_was_told(red_player, any, times=0)
        assert_player_was_put_on(blue_player, "spectator")
        assert_player_was_told(blue_player, matches(".*Open qlstats.net.*"))
        assert_player_received_center_print(blue_player,
                                            matches(".*Join not allowed.*"))
        assert_plugin_sent_to_console(matches(".*not allowed to join.*"))
Exemple #13
0
    def test_cmd_soulz_for_another_non_existent_player(self):
        player = fake_player(123, "Issuing Player", team="red")

        connected_players(player)

        self.plugin.cmd_soulz(player, ["!soulz", "Non-existent"],
                              self.reply_channel)

        assert_player_was_told(player, matches(".*no players matched.*"))
Exemple #14
0
    def test_cmd_mapreaperz_with_no_fragger(self):
        player = fake_player(123, "Issuing Player", team="red")

        connected_players(player)

        self.plugin.cmd_mapreaperz(player, ["!mapreaperz"], self.reply_channel)

        assert_channel_was_replied(
            self.reply_channel,
            matches("Issuing Player.*'s soul was not reaped by anyone, yet."))
    def test_triggered_message_no_triggered_channels_configured(self):
        setup_cvar("qlx_discordTriggeredChannelIds", "")
        self.discord = SimpleAsyncDiscord("version information", self.logger)
        self.setup_discord_library()

        player = fake_player(steam_id=1, name="Chatting player")

        self.discord.triggered_message(player, "QL is great, @member #mention !")

        verify(self.triggered_channel(), times=0).send(any)
Exemple #16
0
    def test_handle_team_switch_attempt_player_has_no_ratings(self):
        switching_player = fake_player(123, "Joining Player")
        connected_players(switching_player)

        return_code = self.plugin.handle_team_switch_attempt(
            switching_player, "spectator", "any")

        assert_player_was_told(switching_player,
                               matches("We couldn't fetch your ratings.*"))
        assert_that(return_code, is_(minqlx.RET_STOP_ALL))
Exemple #17
0
    def test_process_vote_threshold_player_votes_no_and_hits_vote_threshold(
            self):
        self.setup_vote_in_progress()
        self.plugin.track_vote = True
        self.current_vote_count_is(1, 5)

        self.plugin.process_vote(fake_player(123, "Any Player"), False)

        assert_that(self.plugin.track_vote, is_(False))
        verify(Plugin).force_vote(False)
Exemple #18
0
    def test_process_vote_threshold_player_votes_no_and_does_not_meet_threashold(
            self):
        self.setup_vote_in_progress()
        self.plugin.track_vote = True
        self.current_vote_count_is(1, 2)

        self.plugin.process_vote(fake_player(123, "Any Player"), False)

        assert_that(self.plugin.track_vote, is_(True))
        verify(Plugin, times=0).force_vote(any_)
Exemple #19
0
    def test_cmd_soulz_for_acid_deaths(self):
        player = fake_player(123, "Issuing Player", team="red")
        fragged_player = fake_player(456, "Fragged Player", team="red")

        killer1 = fake_player(4, "Killer1", team="blue")
        connected_players(player, fragged_player, killer1)

        when(self.db).zrevrangebyscore("minqlx:players:acid:soulz",
                                       "+INF", "-INF", start=0, num=10, withscores=True)\
            .thenReturn([
                (fragged_player.steam_id, 1)
            ])

        self.plugin.cmd_soulz(player, ["!soulz", "!acid"], self.reply_channel)

        assert_channel_was_replied(
            self.reply_channel,
            matches(r"Top 10 reaped soulz for acid.*: "
                    r"Fragged Player.* \(1\)"))
Exemple #20
0
    def test_handle_team_switch_attempt_no_game_running(self):
        setup_no_game()
        self.plugin = qlstats_privacy_policy()
        switching_player = fake_player(123, "Joining Player")
        connected_players(switching_player)

        return_code = self.plugin.handle_team_switch_attempt(
            switching_player, "spectator", "any")

        assert_that(return_code, is_(minqlx.RET_NONE))
    def test_find_channel_match_more_than_one_channel_found_and_player_informed():
        sending_player = fake_player(steam_id=1, name="Player")
        matched_channel = SimpleAsyncDiscord.find_channel_that_matches("general",
                                                                       [mocked_channel(name="matched_general"),
                                                                        mocked_channel(name="another-matched-general")],
                                                                       sending_player)

        verify(sending_player).tell("Found ^62^7 matching discord channels for #general:")
        verify(sending_player).tell("#matched_general #another-matched-general ")
        assert_that(matched_channel, is_(None))
Exemple #22
0
    def test_cmd_soulz_for_another_non_existent_lava_player(self):
        player = fake_player(123, "Issuing Player", team="red")

        connected_players(player)

        self.plugin.cmd_soulz(player, ["!soulz", "lava"], self.reply_channel)

        assert_player_was_told(player, matches(".*no players matched.*"))
        assert_channel_was_replied(self.reply_channel, any_,
                                   times=0)  # type: ignore
    def test_find_user_match_more_than_one_user_found_and_player_informed():
        sending_player = fake_player(steam_id=1, name="Player")
        matched_user = SimpleAsyncDiscord.find_user_that_matches("user",
                                                                 [mocked_user(name="matched_user"),
                                                                  mocked_user(name="another-matched-uSEr")],
                                                                 sending_player)

        verify(sending_player).tell("Found ^62^7 matching discord users for @user:"******"@matched_user @another-matched-uSEr ")
        assert_that(matched_user, is_(None))
Exemple #24
0
    def test_cmd_mapreaperz_with_lava_backflips(self):
        player = fake_player(123, "Issuing Player", team="red")
        fragged_player = fake_player(456, "Fragged Player", team="red")

        killer1 = fake_player(4, "Killer1", team="blue")
        connected_players(player, fragged_player, killer1)

        self.plugin.frag_log = [(killer1.steam_id, player.steam_id),
                                ("lava", fragged_player.steam_id),
                                ("lava", fragged_player.steam_id),
                                ("void", fragged_player.steam_id)]

        self.plugin.cmd_mapreaperz(player, ["!mapreaperz", "Fragged"],
                                   self.reply_channel)

        assert_channel_was_replied(
            self.reply_channel,
            matches(r"Top 10 reaperz of Fragged Player.*'s soul: "
                    r"lava.* \(2\), void.* \(1\)"))
Exemple #25
0
    def test_cmd_mapsoulz_with_no_frags(self):
        player = fake_player(123, "Issuing Player", team="red")

        connected_players(player)

        self.plugin.cmd_mapsoulz(player, ["!mapsoulz"], self.reply_channel)

        assert_channel_was_replied(
            self.reply_channel,
            matches("Issuing Player.* didn't reap any soulz, yet."))
Exemple #26
0
    def test_handle_team_switch_attempt_first_player_joins(self):
        self.setup_balance_ratings([])
        player = fake_player(42, "Fake Player")
        connected_players(player)

        return_code = self.plugin.handle_team_switch_attempt(
            player, "spectator", "red")

        assert_that(return_code, is_(minqlx.RET_NONE))
        assert_that(self.plugin.last_new_player_id, is_(player.steam_id))
Exemple #27
0
    def test_handle_team_switch_attempt_no_balance_plugin_loaded(self):
        self.setup_no_balance_plugin()
        player = fake_player(42, "Fake Player")
        connected_players(player)

        return_code = self.plugin.handle_team_switch_attempt(
            player, "spectator", "red")

        assert_that(return_code, is_(minqlx.RET_NONE))
        assert_plugin_sent_to_console(matches(".*not possible.*"))
Exemple #28
0
    def test_handle_team_switch_attempt_unsupported_gametype(self):
        setup_game_in_progress(game_type="rr")
        self.setup_balance_ratings([])
        player = fake_player(42, "Fake Player")
        connected_players(player)

        return_code = self.plugin.handle_team_switch_attempt(
            player, "spectator", "red")

        assert_that(return_code, is_(minqlx.RET_NONE))
Exemple #29
0
    def test_handle_team_switch_attempt_fourth_player_joins_not_to_better_balanced_team(
            self):
        red_player = fake_player(123, "Red Player", "red")
        blue_player = fake_player(246, "Blue Player", "blue")
        new_blue_player = fake_player(41, "New Red Player", "blue")
        new_player = fake_player(42, "New Player", "spectator")
        connected_players(red_player, blue_player, new_blue_player, new_player)

        self.setup_balance_ratings([(red_player, 1200), (blue_player, 1400),
                                    (new_blue_player, 1400),
                                    (new_player, 1200)])
        self.plugin.last_new_player_id = new_blue_player.steam_id

        return_code = self.plugin.handle_team_switch_attempt(
            new_player, "spectator", "blue")

        assert_that(return_code, is_(minqlx.RET_NONE))
        assert_player_was_put_on(new_player, "blue", times=0)
        assert_player_was_put_on(new_blue_player, "red")
        assert_that(self.plugin.last_new_player_id, is_(None))
Exemple #30
0
    def test_evaluate_participation_vote_vote_draw(self):
        connected_players(fake_player(123, "Player1"),
                          fake_player(456, "Player2"),
                          fake_player(789, "Player3"),
                          fake_player(321, "Player4"),
                          fake_player(654, "Player5"),
                          fake_player(987, "Player6"),
                          fake_player(135, "Player7"),
                          fake_player(246, "Player8"))

        result = self.strategy.evaluate_votes(3, 3)

        assert_that(result, is_(None))