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