示例#1
0
文件: views.py 项目: v-hunt/cell-game
 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)
示例#2
0
    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!'))
示例#3
0
    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()
            )
示例#4
0
文件: views.py 项目: v-hunt/cell-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)
示例#5
0
文件: views.py 项目: v-hunt/cell-game
 def get(self, request):
     """
     Return gamers all currently running tasks.
     """
     gamer = Gamer(request.user)
     data = gamer.tasks.get_all_task_stringified()
     return Response(data)
示例#6
0
    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
            )
示例#7
0
    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(),
                []
            )
示例#8
0
文件: views.py 项目: v-hunt/cell-game
    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)
示例#9
0
 def setUp(self):
     self.john = John.create()
     self.john_gamer = Gamer(self.john)
示例#10
0
    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)