Пример #1
0
 def test_do_not_give_for_friendly(self):
     """Не даётся модификация за вылет со стрельбой по своим"""
     _create(FILTER, TEST_PLAYER)
     controller = processing.PlayersController(IOC)
     aircraft_name = 'I-16 type 24'
     bot_name = 'BotPilot'
     target_name = 'static_il2'
     atype12_aircraft = tests.mocks.atype_12_stub(1, aircraft_name, 201,
                                                  'test_aircraft', -1)
     atype12_bot = tests.mocks.atype_12_stub(2, bot_name, 201, 'test_bot',
                                             1)
     atype12_static = tests.mocks.atype_12_stub(3, target_name, 201,
                                                'test_target', -1)
     atype10 = _atype_10_stub(1, 2, {
         'x': 100,
         'z': 100
     }, aircraft_name, 201, 3)
     aircraft = IOC.objects_controller.create_object(atype12_aircraft)
     bot = IOC.objects_controller.create_object(atype12_bot)
     target = IOC.objects_controller.create_object(atype12_static)
     IOC.objects_controller.spawn(atype10)
     pos = {'x': 100.0, 'y': 100.0, 'z': 100.0}
     expect = TEST_PLAYER[constants.Player.UNLOCKS]
     # Act
     controller.start_mission()
     controller.spawn(atype10)
     IOC.objects_controller.kill(
         atypes.Atype3(7888, aircraft.obj_id, target.obj_id, pos))
     controller.finish(atypes.Atype16(9222, bot.obj_id, pos))
     controller.disconnect(TEST_ACCOUNT_ID)
     # Assert
     document = IOC.storage.players.collection.find_one(FILTER)
     self.assertEqual(expect, document[constants.Player.UNLOCKS])
Пример #2
0
 def test_kick_restricted_takeoff(self):
     """Отправляется команда кика при запрещённом взлёте"""
     TEST_PLAYER[constants.Player.UNLOCKS] = 0
     _create(FILTER, TEST_PLAYER)
     controller = processing.PlayersController(IOC)
     aircraft_name = 'I-16 type 24'
     bot_name = 'BotPilot'
     pos = {'x': 100.0, 'y': 100.0, 'z': 100.0}
     atype12_aircraft = tests.mocks.atype_12_stub(1, aircraft_name, 201,
                                                  'test_aircraft', -1)
     atype12_bot = tests.mocks.atype_12_stub(2, bot_name, 201, 'test_bot',
                                             1)
     atype10 = _atype_10_stub(1, 2, {
         'x': 100,
         'z': 100
     }, aircraft_name, 201, 3)
     aircraft = IOC.objects_controller.create_object(atype12_aircraft)
     IOC.objects_controller.create_object(atype12_bot)
     atype5 = atypes.Atype5(2132, aircraft.obj_id, pos)
     # Act
     controller.start_mission()
     IOC.objects_controller.spawn(atype10)
     controller.spawn(atype10)
     IOC.objects_controller.takeoff(atype5)
     controller.takeoff(atype5)
     # Assert
     self.assertGreater(len(IOC.console_mock.kicks),
                        0)  # приветствие + предупреждение
Пример #3
0
 def test_give_unlock_for_damage(self):
     """Даётся модификация за вылет с уроном"""
     _create(FILTER, TEST_PLAYER)
     controller = processing.PlayersController(IOC)
     aircraft_name = 'I-16 type 24'
     bot_name = 'BotPilot'
     target_name = 'static_il2'
     atype12_aircraft = tests.mocks.atype_12_stub(1, aircraft_name, 201,
                                                  'test_aircraft', -1)
     atype12_bot = tests.mocks.atype_12_stub(2, bot_name, 201, 'test_bot',
                                             1)
     atype12_static = tests.mocks.atype_12_stub(3, target_name, 101,
                                                'test_target', -1)
     atype10 = _atype_10_stub(1, 2, {
         'x': 100,
         'z': 100
     }, aircraft_name, 201, 3)
     aircraft = IOC.objects_controller.create_object(atype12_aircraft)
     bot = IOC.objects_controller.create_object(atype12_bot)
     target = IOC.objects_controller.create_object(atype12_static)
     IOC.objects_controller.spawn(atype10)
     pos = {'x': 100.0, 'y': 100.0, 'z': 100.0}
     damage = 80.0
     expect = TEST_PLAYER[constants.Player.UNLOCKS] + 1
     # Act
     controller.start_mission()
     controller.spawn(atype10)
     IOC.objects_controller.damage(
         atypes.Atype2(8999, damage, aircraft.obj_id, target.obj_id, pos))
     controller.finish(atypes.Atype16(9222, bot.obj_id, pos))
     # Assert
     document = IOC.storage.players.collection.find_one(FILTER)
     self.assertEqual(expect, document[constants.Player.UNLOCKS])
Пример #4
0
 def test_multiple_spawn_new_nick(self):
     """Пополняются известные ники при спауне с новым ником"""
     _create(FILTER, TEST_PLAYER)
     controller = processing.PlayersController(IOC)
     aircraft_name = 'I-16 type 24'
     bot_name = 'BotPilot'
     atype12_aircraft = tests.mocks.atype_12_stub(1, aircraft_name, 201,
                                                  'test_aircraft', -1)
     atype12_bot = tests.mocks.atype_12_stub(2, bot_name, 201, 'test_bot',
                                             1)
     atype10 = _atype_10_stub(1, 2, {
         'x': 100,
         'z': 100
     }, aircraft_name, 201, 3)
     IOC.objects_controller.create_object(atype12_aircraft)
     IOC.objects_controller.create_object(atype12_bot)
     IOC.objects_controller.spawn(atype10)
     # Act
     controller.start_mission()
     controller.spawn(atype10)
     atype10.name = 'new_nickname'
     controller.spawn(atype10)
     # Assert
     document = IOC.storage.players.collection.find_one(FILTER)
     self.assertEqual([TEST_NICKNAME],
                      document[constants.Player.KNOWN_NICKNAMES])
Пример #5
0
 def test_connect_player_init(self):
     """Инициализируется игрок на первом входе на сервер"""
     controller = processing.PlayersController(IOC)
     # Act
     controller.connect(TEST_ACCOUNT_ID)
     document = IOC.storage.players.collection.find_one(FILTER)
     # Assert
     self.assertNotEqual(None, document)
Пример #6
0
 def test_disconnect_player(self):
     """Ставится статус offline при дисконнекте игрока"""
     _create(FILTER, TEST_PLAYER)
     controller = processing.PlayersController(IOC)
     # Act
     controller.disconnect(TEST_ACCOUNT_ID)
     # Assert
     document = IOC.storage.players.collection.find_one(FILTER)
     self.assertEqual(False, document[constants.Player.ONLINE])
Пример #7
0
 def test_reset(self):
     """Сбрасывается состояние игроков в кампании"""
     TEST_PLAYER[constants.Player.UNLOCKS] = 4
     _create(FILTER, TEST_PLAYER)
     controller = processing.PlayersController(IOC)
     # Act
     controller.reset()
     # Assert
     self.assertEqual(
         IOC.storage.players.find(TEST_ACCOUNT_ID).unlocks,
         IOC.config.gameplay.unlocks_start)
Пример #8
0
 def test_connect_player_check_ban(self):
     """Отправляется команда бана забаненого пользователя через консоль"""
     _create(FILTER, TEST_PLAYER)
     controller = processing.PlayersController(IOC)
     date = datetime.datetime.now() + datetime.timedelta(days=1)
     IOC.storage.players.collection.update_one(
         FILTER, update={'$set': {
             constants.Player.BAN_DATE: date
         }})
     # Act
     controller.connect(TEST_ACCOUNT_ID)
     # Assert
     self.assertIn(TEST_ACCOUNT_ID, IOC.console_mock.banned)
Пример #9
0
 def test_player_initialization(self):
     """Обновляется ник игрока на спауне"""
     _create(FILTER, TEST_PLAYER)
     controller = processing.PlayersController(IOC)
     aircraft_name = 'I-16 type 24'
     bot_name = 'BotPilot'
     atype12_aircraft = tests.mocks.atype_12_stub(1, aircraft_name, 201,
                                                  'test_aircraft', -1)
     atype12_bot = tests.mocks.atype_12_stub(2, bot_name, 201, 'test_bot',
                                             1)
     atype10 = _atype_10_stub(1, 2, {
         'x': 100,
         'z': 100
     }, aircraft_name, 201, 3)
     IOC.objects_controller.create_object(atype12_aircraft)
     IOC.objects_controller.create_object(atype12_bot)
     IOC.objects_controller.spawn(atype10)
     # Act
     controller.start_mission()
     controller.spawn(atype10)
     # Assert
     player = IOC.storage.players.collection.find_one(FILTER)
     self.assertEqual(TEST_NICKNAME, player[constants.Player.NICKNAME])
Пример #10
0
 def test_multiple_spawn_nickname(self):
     """Не добавляетcя лишний известный ник при неоднократном спауне"""
     _create(FILTER, TEST_PLAYER)
     controller = processing.PlayersController(IOC)
     aircraft_name = 'I-16 type 24'
     bot_name = 'BotPilot'
     atype12_aircraft = tests.mocks.atype_12_stub(1, aircraft_name, 201,
                                                  'test_aircraft', -1)
     atype12_bot = tests.mocks.atype_12_stub(2, bot_name, 201, 'test_bot',
                                             1)
     atype10 = _atype_10_stub(1, 2, {
         'x': 100,
         'z': 100
     }, aircraft_name, 201, 3)
     IOC.objects_controller.create_object(atype12_aircraft)
     IOC.objects_controller.create_object(atype12_bot)
     IOC.objects_controller.spawn(atype10)
     # Act
     controller.start_mission()
     controller.spawn(atype10)
     controller.spawn(atype10)
     # Assert
     document = IOC.storage.players.collection.find_one(FILTER)
     self.assertEqual([], document[constants.Player.KNOWN_NICKNAMES])
Пример #11
0
 def test_connect_player(self):
     """Отправляется приветственное сообщение игроку на подключении"""
     TEST_PLAYER[constants.Player.NICKNAME] = TEST_NICKNAME
     _create(FILTER, TEST_PLAYER)
     controller = processing.PlayersController(IOC)
     aircraft_name = 'I-16 type 24'
     bot_name = 'BotPilot'
     atype12_aircraft = tests.mocks.atype_12_stub(1, aircraft_name, 201,
                                                  'test_aircraft', -1)
     atype12_bot = tests.mocks.atype_12_stub(2, bot_name, 201, 'test_bot',
                                             1)
     atype10 = _atype_10_stub(1, 2, {
         'x': 100,
         'z': 100
     }, aircraft_name, 201, 3)
     IOC.objects_controller.create_object(atype12_aircraft)
     IOC.objects_controller.create_object(atype12_bot)
     IOC.objects_controller.spawn(atype10)
     # Act
     controller.start_mission()
     controller.connect(TEST_ACCOUNT_ID)
     # Assert
     self.assertIn((TEST_ACCOUNT_ID, 'Hello {}!'.format(TEST_NICKNAME)),
                   IOC.console_mock.received_private_messages)
Пример #12
0
 def players_controller(self) -> processing.PlayersController:
     """Контроллер игроков"""
     if not self._players_controller:
         self._players_controller = processing.PlayersController(self)
     return self._players_controller