コード例 #1
0
class Test_patch_b3_admin_plugin(BFHTestCase):
    def setUp(self):
        BFHTestCase.setUp(self)
        with logging_disabled():
            self.conf = CfgConfigParser()
            self.conf.loadFromString("""[configuration]""")
            self.parser = BfhParser(self.conf)
            adminPlugin_conf = CfgConfigParser()
            adminPlugin_conf.loadFromString(
                dedent(r"""
                [commands]
                map: 20
            """))
            adminPlugin = AdminPlugin(self.parser, adminPlugin_conf)
            adminPlugin.onLoadConfig()
            adminPlugin.onStartup()
            when(self.parser).getPlugin('admin').thenReturn(adminPlugin)
            self.parser.patch_b3_admin_plugin()
            self.joe = FakeClient(self.parser,
                                  name="Joe",
                                  guid="joeguid",
                                  groupBits=128)
            self.joe.connects(cid="joe")
            self.parser.game.gameType = "TurfWarSmall0"
            self.parser.game.serverinfo = {'roundsTotal': 2}

    def test_map_known_on_correct_gamemode(self):
        # GIVEN
        self.parser.game.gameType = "TurfwarLarge0"
        # WHEN
        with patch.object(self.parser, 'changeMap') as changeMap_mock:
            self.joe.says("!map Downtown")
        # THEN
        self.assertListEqual([
            call(
                'mp_downtown', gamemode_id='TurfwarLarge0', number_of_rounds=2)
        ], changeMap_mock.mock_calls)
        self.assertListEqual([], self.joe.message_history)

    def test_map_InvalidGameModeOnMap(self):
        self.parser.game.gameType = "Hotwire0"
        # WHEN
        when(self.parser).changeMap('mp_bank',
                                    gamemode_id="Hotwire0",
                                    number_of_rounds=2).thenRaise(
                                        CommandFailedError(
                                            ["InvalidGameModeOnMap"]))
        self.joe.says("!map bank")
        # THEN
        self.assertListEqual([
            'Bank Job cannot be played with gamemode Hotwire',
            'supported gamemodes are : Conquest Large, Conquest Small, Heist, Blood Money, Crosshair, Rescue, Team Deathmatch'
        ], self.joe.message_history)

    def test_map_InvalidRoundsPerMap(self):
        # WHEN
        when(self.parser).changeMap('mp_bank',
                                    gamemode_id="TurfWarSmall0",
                                    number_of_rounds=2).thenRaise(
                                        CommandFailedError(
                                            ["InvalidRoundsPerMap"]))
        self.joe.says("!map bank")
        # THEN
        self.assertListEqual(['number of rounds must be 1 or greater'],
                             self.joe.message_history)

    def test_map_Full(self):
        # WHEN
        with patch.object(self.parser,
                          "changeMap",
                          side_effect=CommandFailedError(["Full"])):
            self.joe.says("!map bank")
        # THEN
        self.assertListEqual(['map list maximum size has been reached'],
                             self.joe.message_history)

    def test_map_unknown(self):
        # WHEN
        with patch.object(self.parser, 'changeMap') as changeMap_mock:
            self.joe.says("!map xxxxxxxxf00xxxxxxxxx")
        # THEN
        self.assertListEqual([], changeMap_mock.mock_calls)
        self.assertEqual(1, len(self.joe.message_history))
        self.assertTrue(self.joe.message_history[0].startswith("do you mean"))
コード例 #2
0
class Test_patch_b3_admin_plugin(BFHTestCase):
    def setUp(self):
        BFHTestCase.setUp(self)
        with logging_disabled():
            self.conf = CfgConfigParser()
            self.conf.loadFromString("""[configuration]""")
            self.parser = BfhParser(self.conf)
            adminPlugin_conf = CfgConfigParser()
            adminPlugin_conf.loadFromString(dedent(r"""
                [commands]
                map: 20
            """))
            adminPlugin = AdminPlugin(self.parser, adminPlugin_conf)
            adminPlugin.onLoadConfig()
            adminPlugin.onStartup()
            when(self.parser).getPlugin('admin').thenReturn(adminPlugin)
            self.parser.patch_b3_admin_plugin()
            self.joe = FakeClient(self.parser, name="Joe", guid="joeguid", groupBits=128)
            self.joe.connects(cid="joe")
            self.parser.game.gameType = "TurfWarSmall0"
            self.parser.game.serverinfo = {'roundsTotal': 2}

    def test_map_known_on_correct_gamemode(self):
        # GIVEN
        self.parser.game.gameType = "TurfwarLarge0"
        # WHEN
        with patch.object(self.parser, 'changeMap') as changeMap_mock:
            self.joe.says("!map Downtown")
        # THEN
        self.assertListEqual([call('mp_downtown', gamemode_id='TurfwarLarge0', number_of_rounds=2)],
                             changeMap_mock.mock_calls)
        self.assertListEqual([], self.joe.message_history)

    def test_map_InvalidGameModeOnMap(self):
        self.parser.game.gameType = "Hotwire0"
        # WHEN
        when(self.parser).changeMap('mp_bank', gamemode_id="Hotwire0", number_of_rounds=2).thenRaise(
            CommandFailedError(["InvalidGameModeOnMap"]))
        self.joe.says("!map bank")
        # THEN
        self.assertListEqual(
            ['Bank Job cannot be played with gamemode Hotwire',
             'supported gamemodes are : Conquest Large, Conquest Small, Heist, Blood Money, Crosshair, Rescue, Team Deathmatch'],
            self.joe.message_history)

    def test_map_InvalidRoundsPerMap(self):
        # WHEN
        when(self.parser).changeMap('mp_bank', gamemode_id="TurfWarSmall0", number_of_rounds=2).thenRaise(
            CommandFailedError(["InvalidRoundsPerMap"]))
        self.joe.says("!map bank")
        # THEN
        self.assertListEqual(['number of rounds must be 1 or greater'], self.joe.message_history)

    def test_map_Full(self):
        # WHEN
        with patch.object(self.parser, "changeMap", side_effect=CommandFailedError(["Full"])):
            self.joe.says("!map bank")
        # THEN
        self.assertListEqual(['map list maximum size has been reached'], self.joe.message_history)

    def test_map_unknown(self):
        # WHEN
        with patch.object(self.parser, 'changeMap') as changeMap_mock:
            self.joe.says("!map xxxxxxxxf00xxxxxxxxx")
        # THEN
        self.assertListEqual([], changeMap_mock.mock_calls)
        self.assertEqual(1, len(self.joe.message_history))
        self.assertTrue(self.joe.message_history[0].startswith("do you mean"))