From a89caf0d12d9a378b6dee180a02e9d553a8d94ba Mon Sep 17 00:00:00 2001 From: JennyRemolina Date: Wed, 10 Jul 2019 18:22:23 -0400 Subject: [PATCH 1/4] fix TaskSerializer create method --- api/serializers.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/api/serializers.py b/api/serializers.py index f9d1a0f..9ed17c3 100644 --- a/api/serializers.py +++ b/api/serializers.py @@ -95,9 +95,9 @@ def create(self, validated_data): users_data = validated_data.pop('task_to_user') except KeyError as k: users_data = {} - task = Project.objects.create(**validated_data) + task = Task.objects.create(**validated_data) for data in users_data: - UserProject.objects.create(task=task, **data) + Assignee.objects.create(task=task, **data) return task From 6d9183a58d4b760349eedc34ad4c036d815c8b6c Mon Sep 17 00:00:00 2001 From: JennyRemolina Date: Thu, 11 Jul 2019 07:00:42 -0400 Subject: [PATCH 2/4] moving AuthBaseTestCase into its own file --- api/tests/authBase.py | 15 +++++++++++++++ api/tests/test_projects.py | 12 +----------- 2 files changed, 16 insertions(+), 11 deletions(-) create mode 100644 api/tests/authBase.py diff --git a/api/tests/authBase.py b/api/tests/authBase.py new file mode 100644 index 0000000..4714505 --- /dev/null +++ b/api/tests/authBase.py @@ -0,0 +1,15 @@ +from rest_framework.test import APITestCase + +from users.models import CustomUser + + +class AuthBaseTestCase(APITestCase): + email = "@testuser.com" + password = "12345Hola" + + def setUp(self): + self.user = CustomUser.objects.create_user('user', 'user'+self.email, self.password) + self.jefe = CustomUser.objects.create_user('jefe', 'jefe'+self.email, self.password) + self.emp1 = CustomUser.objects.create_user('emp1', 'emp1'+self.email, self.password) + self.emp2 = CustomUser.objects.create_user('emp2', 'emp2'+self.email, self.password) + self.client.login(username='jefe', password=self.password) diff --git a/api/tests/test_projects.py b/api/tests/test_projects.py index 7fec63f..4d1aa57 100644 --- a/api/tests/test_projects.py +++ b/api/tests/test_projects.py @@ -7,17 +7,7 @@ from api.models import * from api.serializers import * - -class AuthBaseTestCase(APITestCase): - email = "@testuser.com" - password = "12345Hola" - - def setUp(self): - self.user = CustomUser.objects.create_user('user', 'user'+self.email, self.password) - self.jefe = CustomUser.objects.create_user('jefe', 'jefe'+self.email, self.password) - self.emp1 = CustomUser.objects.create_user('emp1', 'emp1'+self.email, self.password) - self.emp2 = CustomUser.objects.create_user('emp2', 'emp2'+self.email, self.password) - self.client.login(username='jefe', password=self.password) +from .authBase import AuthBaseTestCase From f21b59753617c962d4b2ef305f86cb6ddee43a80 Mon Sep 17 00:00:00 2001 From: JennyRemolina Date: Thu, 11 Jul 2019 07:01:56 -0400 Subject: [PATCH 3/4] testing CRUD operations in Task entrypoints --- api/tests/test_tasks.py | 126 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 126 insertions(+) create mode 100644 api/tests/test_tasks.py diff --git a/api/tests/test_tasks.py b/api/tests/test_tasks.py new file mode 100644 index 0000000..d0e2746 --- /dev/null +++ b/api/tests/test_tasks.py @@ -0,0 +1,126 @@ +import json + +from users.models import CustomUser + +from api.models import * +from api.serializers import * + +from .authBase import AuthBaseTestCase + + + +class TaskTestCase(AuthBaseTestCase): + url = '/api/v1/tasks' + + def setUp(self): + super().setUp() # Authenticanting + self.data_project = { + "title": "black mesa", + "description": "particle accelerator", + "creator": self.jefe, + } + self.project = Project.objects.create(**self.data_project) + self.boards = Board.objects.all() + self.board = self.boards[0] + print(self.boards) + print(self.board) + self.data = { + "title": "task 1", + "description": "first task", + "priority": 1, + "due_date": "2019-11-11", + "board": self.board, + } + self.task = Task.objects.create(**self.data) + self.data['board'] = self.board.id + + + def test_read_task_get(self): + """ + Test to verify GET task valid (Model and Serializer) + """ + print('before get') + url = self.url + '?board={id}'.format(id=self.board.id) + response = self.client.get(url) + print(response.status_code, response.content) + self.assertEqual(200, response.status_code) + response_data = json.loads(response.content) + print(response_data) + taskSerial = TaskSerializer(instance=self.task) + print(taskSerial.data) + self.assertEqual(taskSerial.data, response_data['results'][0]) + + + def test_create_task_post(self): + """ + Test to verify POST task valid + """ + self.data['title'] = 'task 2' + self.data['description'] = 'second task' + self.data['board'] = self.board.id + response = self.client.post(self.url, self.data) + print(response.status_code, response.content) + self.assertEqual(201, response.status_code) + + url = self.url + '?board={id}'.format(id=self.board.id) + response = self.client.get(url) + print(response.status_code, response.content) + self.assertEqual(200, response.status_code) + response_data = json.loads(response.content) + self.assertEqual(2, response_data['count']) # 2 projects + + + def test_delete_task_delete(self): + """ + Test to verify DELETE task valid + """ + url = self.url+'/{task_id}?board={board_id}'.format( + task_id=self.task.id, board_id=self.board.id) + response = self.client.get(url) + print(response.status_code, response.content) + self.assertEqual(200, response.status_code) + + response = self.client.delete(url) + print(response.status_code, response.content) + self.assertEqual(204, response.status_code) + self.assertEqual(b'', response.content) + + + def test_update_task_patch(self): + """ + Test to verify PATCH task valid + """ + data = {'title': 'Task 1(one)'} + url = self.url+'/{task_id}?board={board_id}'.format( + task_id=self.task.id, board_id=self.board.id) + response = self.client.get(url) + print(response.status_code, response.content) + self.assertEqual(200, response.status_code) + + response = self.client.patch(url, data) + print(response.status_code, response.content) + self.assertEqual(200, response.status_code) + response_data = json.loads(response.content) + print(response_data) + self.assertEqual(data['title'], response_data['title']) # updated + + + def test_update_task_put(self): + """ + Test to verify PUT task valid + """ + data = dict(self.data) # copy + data['title'] = 'Task 1(one)' + + url = self.url+'/{task_id}?board={board_id}'.format( + task_id=self.task.id, board_id=self.board.id) + response = self.client.get(url) + print(response.status_code, response.content) + self.assertEqual(200, response.status_code) + + response = self.client.put(url, data) + print(response.status_code, response.content) + self.assertEqual(200, response.status_code) + response_data = json.loads(response.content) + print(response_data) + self.assertEqual(data['title'], response_data['title']) # updated From cce98390bc13746553b91c3b72eb5bc1279757e1 Mon Sep 17 00:00:00 2001 From: JennyRemolina Date: Thu, 11 Jul 2019 07:30:41 -0400 Subject: [PATCH 4/4] testing GET in board entrypoint --- api/tests/test_boards.py | 52 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 api/tests/test_boards.py diff --git a/api/tests/test_boards.py b/api/tests/test_boards.py new file mode 100644 index 0000000..03a05d4 --- /dev/null +++ b/api/tests/test_boards.py @@ -0,0 +1,52 @@ +import json + +from users.models import CustomUser + +from api.models import * +from api.serializers import * + +from .authBase import AuthBaseTestCase + + + +class BoardTestCase(AuthBaseTestCase): + url = '/api/v1/boards' + + def setUp(self): + super().setUp() # Authenticanting + self.data_project = { + "title": "black mesa", + "description": "particle accelerator", + "creator": self.jefe, + } + self.project = Project.objects.create(**self.data_project) + self.boards = Board.objects.all() + self.board = self.boards[0] + print(self.boards) + print(self.board) + self.data_task = { + "title": "task 1", + "description": "first task", + "priority": 1, + "due_date": "2019-11-11", + "board": self.board, + } + self.task = Task.objects.create(**self.data_task) + self.data_task['board'] = self.board.id + + + def test_read_board_get(self): + """ + Test to verify GET board valid (Model and Serializer) + """ + url = self.url + '?project={id}'.format(id=self.project.id) + response = self.client.get(url) + print(response.status_code, response.content) + self.assertEqual(200, response.status_code) + response_data = json.loads(response.content) + print(response_data) + boardSerial = BoardSerializer(instance=self.board) + boardsSerial= [BoardSerializer(instance=x).data for x in self.boards] + print(boardSerial.data) + print(boardsSerial) + self.assertEqual(boardsSerial, response_data['results'])