Skip to content

Commit

Permalink
Merge branch 'development'
Browse files Browse the repository at this point in the history
  • Loading branch information
juliolugo96 committed Jul 12, 2019
2 parents 247fe13 + 1541837 commit 78a131b
Show file tree
Hide file tree
Showing 7 changed files with 338 additions and 12 deletions.
6 changes: 5 additions & 1 deletion api/signals.py
Original file line number Diff line number Diff line change
Expand Up @@ -86,9 +86,13 @@ def send_assignations(sender, instance, created, **kwargs):

if created:
user = instance.user
project = instance.task.board.project
userProject = UserProject.objects.get(user=user, project=project)
create_notification("assignation", user, instance)
payload = {
"task": instance.task,
"project": project.id,
"role": userProject.role,
"task": instance.task.id,
"notifier_type": "assignation",
}
content = insert_content(payload)
Expand Down
15 changes: 15 additions & 0 deletions api/tests/authBase.py
Original file line number Diff line number Diff line change
@@ -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)
62 changes: 62 additions & 0 deletions api/tests/test_assignees.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
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/assignees'

def setUp(self):
super().setUp() # Create 4 users(user,jefe,emp1,emp2) and Login jefe
self.data_project = {
"title": "black Mesa",
"description": "particle accelerator",
"creator": self.jefe,
}
self.project = Project.objects.create(**self.data_project)
self.boards = Board.objects.filter(project=self.project.id)
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-07-27",
"board": self.board,
}
self.task = Task.objects.create(**self.data_task)
#self.data_task['board'] = self.board.id
self.data_userProject = {
"user": self.emp1,
"project": self.project,
"role": "Backend",
"status": "active",
}
self.emp1Proj = UserProject.objects.create(**self.data_userProject)
data = {
"user": self.emp1,
"task": self.task,
}
self.assigTask1_Emp1 = Assignee.objects.create(**data)


def test_read_assignees_get(self):
"""
Test to verify GET assignees valid (Model and Serializer)
"""
url = self.url + '?task={id}'.format(id=self.task.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)
assigneeSerial = AssigneeSerializer(instance=self.assigTask1_Emp1)
print(assigneeSerial.data)
self.assertEqual(assigneeSerial.data, response_data['results'][0])
52 changes: 52 additions & 0 deletions api/tests/test_boards.py
Original file line number Diff line number Diff line change
@@ -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'])
77 changes: 77 additions & 0 deletions api/tests/test_memberships.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
import json

from rest_framework.test import APITestCase

from users.models import CustomUser

from api.models import *
from api.serializers import *

from .authBase import AuthBaseTestCase



class ProjectTestCase(AuthBaseTestCase):
url = '/api/v1/memberships'

def setUp(self):
super().setUp() # Create 4 users(user,jefe,emp1,emp2) and Login jefe
self.client.logout() # Logout jefe
self.client.login(username='emp1', password=self.password)
self.data_project = {
"title": "black mesa",
"description": "particle accelerator",
"creator": self.jefe,
# "project_to_user": [
# self.emp1,
# self.emp2
# ]
}
self.project = Project.objects.create(**self.data_project)
self.data_project['creator'] = self.jefe.id
self.data = {
"user": self.emp1,
"project": self.project,
"role": "Backend",
"status": "active",
}
self.emp1Proj = UserProject.objects.create(**self.data)


def test_read_membership_get(self):
"""
Test to verify GET membership valid (Model and Serializer)
"""
response = self.client.get(self.url)
print(response.status_code, response.content)
self.assertEqual(200, response.status_code)
response_data = json.loads(response.content)['results']
print(response_data)
emp1ProjSerial = UserProjectSerializer(instance=self.emp1Proj)
print(emp1ProjSerial.data)
self.assertEqual(emp1ProjSerial.data, response_data[0])


def test_create_membership_post(self):
"""
Test to verify POST membership valid
"""
self.data['project'] = self.project.id
self.data['user'] = self.emp2.id
self.data['role'] = 'Frontend'

response = self.client.post(self.url, self.data)
print(response.status_code, response.content)
self.assertEqual(201, response.status_code)

self.client.logout() # Logout emp1
self.client.login(username='emp2', password=self.password)
response = self.client.get(self.url)
print(response.status_code, response.content)
self.assertEqual(200, response.status_code)
response_data = json.loads(response.content)['results']
print(response_data)
emp2Proj = UserProject.objects.get(user=self.emp2.id)
emp2ProjSerial = UserProjectSerializer(instance=emp2Proj)
print(emp2ProjSerial.data)
self.assertEqual(emp2ProjSerial.data, response_data[0])
12 changes: 1 addition & 11 deletions api/tests/test_projects.py
Original file line number Diff line number Diff line change
Expand Up @@ -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



Expand Down
126 changes: 126 additions & 0 deletions api/tests/test_tasks.py
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit 78a131b

Please sign in to comment.