def get(self, request): """ Get gamer's field. """ gamer = Gamer(request.user) data = gamer.show_game_field() return Response(data, status=status.HTTP_200_OK)
def handle(self, *args, **options): for num in range(self.NUM_OF_GAMERS): username = "******".format(num) email = username + '@example.com' password = '******' user = self._get_or_create_user(username, email, password) gamer = Gamer(user) if not gamer.in_game(): task_types = self._get_random_task_types() for task_type in task_types: gamer.tasks.start(task_type) self.stdout.write( self.style.SUCCESS("{} started game tasks: {}".format( username, task_types, ))) print() self.stdout.write( self.style.SUCCESS('\tGame initialized successfully!'))
def test_in_game(self): john_gamer = Gamer(self.john) with self.subTest("test False case"): self.assertFalse( john_gamer.in_game(), ) with self.subTest("test True case"): john_gamer.tasks.start(GameTaskType.TYPE_1) self.assertTrue( john_gamer.in_game() )
def delete(self, request, task_type): """ Kill gamer's running task. """ gamer = Gamer(request.user) gamer.tasks.stop(task_type) return Response(status=status.HTTP_204_NO_CONTENT)
def get(self, request): """ Return gamers all currently running tasks. """ gamer = Gamer(request.user) data = gamer.tasks.get_all_task_stringified() return Response(data)
def test_show_game_field(self): john_gamer = Gamer(self.john) john_gamer.gamer.set_new_location(50, 50) john_gamer.tasks.start(1) # in game field, in game, 2 tasks started: user_1 = ActiveUser.create() gamer_1 = Gamer(user_1) gamer_1.gamer.set_new_location(45, 40) gamer_1.tasks.start(1) gamer_1.tasks.start(2) # in game field, in game, 1 task started: user_2 = ActiveUser.create() gamer_2 = Gamer(user_2) gamer_2.gamer.set_new_location(55, 60) gamer_2.tasks.start(3) # in game field, not in game: user_3 = ActiveUser.create() gamer_3 = Gamer(user_3) gamer_3.gamer.set_new_location(51, 52) # out of game field, in game, 1 task started: user_4 = ActiveUser.create() gamer_4 = Gamer(user_4) gamer_4.gamer.set_new_location(200, 300) gamer_4.tasks.start(1) game_field = john_gamer.show_game_field() with self.subTest("Test result length"): self.assertEqual( len(game_field), 2, "Wrong length of game field!" ) with self.subTest("Test gamers are correct in result"): self.assertEqual( game_field[0]['gamer'], user_1.username ) self.assertEqual( game_field[1]['gamer'], user_2.username ) with self.subTest("Test 'tasks' field length in result"): self.assertEqual( len(game_field[0]['tasks']), 2 ) self.assertEqual( len(game_field[1]['tasks']), 1 )
def test_get(self): """ Test get game field via API. """ john_gamer = Gamer(self.john) john_gamer.gamer.set_new_location(50, 50) john_gamer.tasks.start(1) # in game field, in game, 2 tasks started: user_1 = ActiveUser.create() gamer_1 = Gamer(user_1) gamer_1.gamer.set_new_location(45, 40) gamer_1.tasks.start(1) gamer_1.tasks.start(2) # in game field, in game, 1 task started: user_2 = ActiveUser.create() gamer_2 = Gamer(user_2) gamer_2.gamer.set_new_location(55, 60) gamer_2.tasks.start(3) self.client.force_login(self.john) resp = self.client.get(self.URL) with self.subTest("Test status is correct"): self.assertEqual( resp.status_code, status.HTTP_200_OK, ) with self.subTest("Test response is not empty"): # as we tested 'show_game_field' method in details, here we run smoke test only: self.assertNotEqual( resp.json(), [] )
def post(self, request): """ Create new task by a user. """ serializer = TaskTypeSerializer(data=request.data) if serializer.is_valid(): task_type = serializer.validated_data['taskType'] gamer = Gamer(request.user) try: ttl = gamer.tasks.start(task_type) data = {'taskType': task_type, 'ttl': ttl} return Response(data, status=status.HTTP_201_CREATED) except TaskAlreadyRunningError as err: return Response( {'msg': str(err)}, status.HTTP_409_CONFLICT, ) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def setUp(self): self.john = John.create() self.john_gamer = Gamer(self.john)
def setUp(self): self.john = John.create() self.john_gamer = Gamer(self.john) self.task_type = 1 self.john_gamer.tasks.start(self.task_type)