Skip to content

Commit

Permalink
Limpiando test
Browse files Browse the repository at this point in the history
  • Loading branch information
josjimjim committed Apr 24, 2017
1 parent 2beb2d7 commit 118438f
Show file tree
Hide file tree
Showing 3 changed files with 266 additions and 202 deletions.
154 changes: 90 additions & 64 deletions Metronus-Project/metronus_app/test/testDepartmentMetrics.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ def ranstr():

# Son herramientas sorpresa que nos ayudarán más tarde

def checkJsonMetricsAreEqual(self, response_string, data):
def check_json_metrics_are_equal(self, response_string, data):
"""
Checks the data provided by the JSON equals the real data
"""
Expand All @@ -45,7 +45,8 @@ def checkJsonMetricsAreEqual(self, response_string, data):

self.assertEquals(val, response['values'][ind])

def createEmployeeInProjDept(project, department):

def create_employee_in_projdept(project, department):
"""
creates an employee and assigns him/her a new role
"""
Expand Down Expand Up @@ -75,7 +76,8 @@ def createEmployeeInProjDept(project, department):

return employee

def createTaskInProjDept(project, department):

def create_task_in_projdept(project, department):
"""
creates a task for a given project and department
"""
Expand All @@ -85,22 +87,23 @@ def createTaskInProjDept(project, department):
pd = ProjectDepartment.objects.create(project_id=project, department_id=department)

Task.objects.create(
name = ranstr(),
description = ranstr(),
actor_id = Administrator.objects.get(identifier="adm01"),
projectDepartment_id = pd
name=ranstr(),
description=ranstr(),
actor_id=Administrator.objects.get(identifier="adm01"),
projectDepartment_id=pd
)

def createTimelogInTask(task, duration, date, employee = None):

def create_timelog_in_task(task, duration, date, employee=None):
"""
creates a timelog for an employee involving a task during a specific date
"""
TimeLog.objects.create(
description = ranstr(),
workDate = date,
duration = duration,
task_id = task,
employee_id = Employee.objects.get(identifier="emp01") if employee is None else employee
description=ranstr(),
workDate=date,
duration=duration,
task_id=task,
employee_id=Employee.objects.get(identifier="emp01") if employee is None else employee
)


Expand Down Expand Up @@ -189,19 +192,22 @@ def setUp(self):
company_id=company1
)

dep3 = Department.objects.create(
# dep3
Department.objects.create(
name="Departamento3",
active=True,
company_id=company1
)

dep4 = Department.objects.create(
# dep4
Department.objects.create(
name="Departamento4",
active=True,
company_id=company1
)

dep5 = Department.objects.create(
# dep5
Department.objects.create(
name="Departamento5",
active=True,
company_id=company2
Expand All @@ -216,34 +222,41 @@ def setUp(self):
role_ex = Role.objects.create(name="EXECUTIVE", tier=50)
Role.objects.create(name="PROJECT_MANAGER", tier=40)
role_tm = Role.objects.create(name="TEAM_MANAGER", tier=30)
role_co = Role.objects.create(name="COORDINATOR", tier=20)
# role_co
Role.objects.create(name="COORDINATOR", tier=20)
Role.objects.create(name="EMPLOYEE", tier=10)

pro1 = Project.objects.create(name="pro1", deleted=False, company_id=company1)
# pro2
Project.objects.create(name="pro2", deleted=False, company_id=company2)
pro3 = Project.objects.create(name="pro3", deleted=False, company_id=company1)
pro4 = Project.objects.create(name="pro4", deleted=False, company_id=company1)
# pro3
Project.objects.create(name="pro3", deleted=False, company_id=company1)
# pro4
Project.objects.create(name="pro4", deleted=False, company_id=company1)
Project.objects.create(name="pro_random", deleted=False, company_id=company1)

pd = ProjectDepartment.objects.create(project_id=pro1, department_id=dep2)
pd2 = ProjectDepartment.objects.create(project_id=pro1, department_id=dep_rand)

pdrole1 = ProjectDepartmentEmployeeRole.objects.create(
projectDepartment_id = pd,
role_id = role_tm,
employee_id = employee1
# pdrole1
ProjectDepartmentEmployeeRole.objects.create(
projectDepartment_id=pd,
role_id=role_tm,
employee_id=employee1
)

pdrole2 = ProjectDepartmentEmployeeRole.objects.create(
projectDepartment_id = pd,
role_id = role_ex,
employee_id = employee2
# pdrole2
ProjectDepartmentEmployeeRole.objects.create(
projectDepartment_id=pd,
role_id=role_ex,
employee_id=employee2
)

pdrole3 = ProjectDepartmentEmployeeRole.objects.create(
projectDepartment_id = pd2,
role_id = role_ex,
employee_id = employee2
# pdrole3
ProjectDepartmentEmployeeRole.objects.create(
projectDepartment_id=pd2,
role_id=role_ex,
employee_id=employee2
)

def test_access_denied_not_logged_emppertask(self):
Expand All @@ -252,7 +265,8 @@ def test_access_denied_not_logged_emppertask(self):
"""
c = Client()

response = c.get("/department/ajaxEmployeesPerTask?department_id={0}" .format( Department.objects.get(name="Departamento2").id))
response = c.get("/department/ajaxEmployeesPerTask?department_id={0}" .format(
Department.objects.get(name="Departamento2").id))
self.assertEquals(response.status_code, 403)

def test_access_denied_low_role_emppertask(self):
Expand All @@ -262,7 +276,8 @@ def test_access_denied_low_role_emppertask(self):
c = Client()
c.login(username="emp1", password="123456")

response = c.get("/department/ajaxEmployeesPerTask?department_id={0}" .format( Department.objects.get(name="Departamento2").id))
response = c.get("/department/ajaxEmployeesPerTask?department_id={0}" .format(
Department.objects.get(name="Departamento2").id))
self.assertEquals(response.status_code, 403)

def test_access_ok_executive_emppertask(self):
Expand All @@ -272,7 +287,8 @@ def test_access_ok_executive_emppertask(self):
c = Client()
c.login(username="emp2", password="123456")

response = c.get("/department/ajaxEmployeesPerTask?department_id={0}" .format( Department.objects.get(name="Departamento2").id))
response = c.get("/department/ajaxEmployeesPerTask?department_id={0}" .format(
Department.objects.get(name="Departamento2").id))
self.assertEquals(response.status_code, 200)

def test_access_other_company_executive_emppertask(self):
Expand All @@ -282,7 +298,8 @@ def test_access_other_company_executive_emppertask(self):
c = Client()
c.login(username="emp2", password="123456")

response = c.get("/department/ajaxEmployeesPerTask?department_id={0}" .format( Department.objects.get(name="Departamento5").id))
response = c.get("/department/ajaxEmployeesPerTask?department_id={0}" .format(
Department.objects.get(name="Departamento5").id))
self.assertEquals(response.status_code, 403)

def test_bad_request_emppertask(self):
Expand Down Expand Up @@ -316,33 +333,36 @@ def test_random_data_emppertask(self):
for project in projects:

# Create between 1 and 5 tasks for the current project and the department
for _ in range(random.randint(1,5)):
createTaskInProjDept(project, department)
for x in range(random.randint(1, 5)):
create_task_in_projdept(project, department)

for task in Task.objects.filter(projectDepartment_id__department_id = department, projectDepartment_id__project_id = project):
for task in Task.objects.filter(projectDepartment_id__department_id=department,
projectDepartment_id__project_id=project):
# Create between 2 and 20 employees, that will assign time to that task
num_employees = random.randint(2,20)
num_employees = random.randint(2, 20)
true_data['names'].append(task.name)
true_data['values'].append(num_employees)

for _ in range(num_employees):
employee = createEmployeeInProjDept(project, department)
for y in range(num_employees):
employee = create_employee_in_projdept(project, department)

# Make them create time logs
for _ in range(random.randint(1,3)):
createTimelogInTask(task, 100, "2016-01-01 10:00+00:00", employee)
for z in range(random.randint(1, 3)):
create_timelog_in_task(task, 100, "2016-01-01 10:00+00:00", employee)

response = c.get("/department/ajaxEmployeesPerTask?department_id={0}" .format( Department.objects.get(name="Dep_rand").id))
response = c.get("/department/ajaxEmployeesPerTask?department_id={0}" .format(
Department.objects.get(name="Dep_rand").id))
self.assertEquals(response.status_code, 200)
checkJsonMetricsAreEqual(self, str(response.content, encoding='utf8'), true_data)
check_json_metrics_are_equal(self, str(response.content, encoding='utf8'), true_data)

def test_access_denied_not_logged_timepertask(self):
"""
Try getting the timepertask JSON without authentication
"""
c = Client()

response = c.get("/department/ajaxTimePerTask?department_id={0}" .format( Department.objects.get(name="Departamento2").id))
response = c.get("/department/ajaxTimePerTask?department_id={0}" .format(
Department.objects.get(name="Departamento2").id))
self.assertEquals(response.status_code, 403)

def test_access_denied_low_role_timepertask(self):
Expand All @@ -352,7 +372,8 @@ def test_access_denied_low_role_timepertask(self):
c = Client()
c.login(username="emp1", password="123456")

response = c.get("/department/ajaxTimePerTask?department_id={0}" .format( Department.objects.get(name="Departamento2").id))
response = c.get("/department/ajaxTimePerTask?department_id={0}" .format(
Department.objects.get(name="Departamento2").id))
self.assertEquals(response.status_code, 403)

def test_access_ok_executive_timepertask(self):
Expand All @@ -362,7 +383,8 @@ def test_access_ok_executive_timepertask(self):
c = Client()
c.login(username="emp2", password="123456")

response = c.get("/department/ajaxTimePerTask?department_id={0}" .format( Department.objects.get(name="Departamento2").id))
response = c.get("/department/ajaxTimePerTask?department_id={0}" .format(
Department.objects.get(name="Departamento2").id))
self.assertEquals(response.status_code, 200)

def test_access_other_company_executive_timepertask(self):
Expand All @@ -372,7 +394,8 @@ def test_access_other_company_executive_timepertask(self):
c = Client()
c.login(username="emp2", password="123456")

response = c.get("/department/ajaxTimePerTask?department_id={0}" .format( Department.objects.get(name="Departamento5").id))
response = c.get("/department/ajaxTimePerTask?department_id={0}" .format(
Department.objects.get(name="Departamento5").id))
self.assertEquals(response.status_code, 403)

def test_bad_request_timepertask(self):
Expand Down Expand Up @@ -406,43 +429,46 @@ def test_random_data_timepertask(self):
for project in projects:

# Create between 1 and 5 tasks for the current project and the department
for _ in range(random.randint(1,5)):
createTaskInProjDept(project, department)
for x in range(random.randint(1, 5)):
create_task_in_projdept(project, department)

for task in Task.objects.filter(projectDepartment_id__department_id = department, projectDepartment_id__project_id = project):
for task in Task.objects.filter(projectDepartment_id__department_id=department,
projectDepartment_id__project_id=project):
# Create between 2 and 10 employees, that will assign time to that task
num_employees = random.randint(2,10)
num_employees = random.randint(2, 10)
used_time = 0

for _ in range(num_employees):
employee = createEmployeeInProjDept(project, department)
for y in range(num_employees):
employee = create_employee_in_projdept(project, department)

# Make them create time logs (between 1 and 3)
for _ in range(random.randint(1,3)):
count = random.choice([True, True, True, False]) # 25% chance of being outside of the requested time margin
for z in range(random.randint(1, 3)):
# 25% chance of being outside of the requested time margin
count = random.choice([True, True, True, False])
date_worked = "2016-06-01 10:00+01:00" if count else "2014-01-01 10:00+00:00"
time_worked = random.randint(1, 1000)

createTimelogInTask(task, time_worked, date_worked, employee)
create_timelog_in_task(task, time_worked, date_worked, employee)

if count:
used_time += time_worked

true_data['names'].append(task.name)
true_data['values'].append(used_time)

response = c.get("/department/ajaxTimePerTask?department_id={0}&start_date=2016-01-01&end_date=2016-12-31" .format( Department.objects.get(name="Dep_rand").id))
response = c.get(
"/department/ajaxTimePerTask?department_id={0}&start_date=2016-01-01&end_date=2016-12-31" .format(
Department.objects.get(name="Dep_rand").id))
self.assertEquals(response.status_code, 200)
checkJsonMetricsAreEqual(self, str(response.content, encoding='utf8'), true_data)

check_json_metrics_are_equal(self, str(response.content, encoding='utf8'), true_data)

def test_access_denied_not_logged_profit(self):
"""
Without authentication, try getting the profit JSON
"""
c = Client()

response = c.get("/department/ajaxProfit/{0}/" .format( Department.objects.get(name="Departamento2").id))
response = c.get("/department/ajaxProfit/{0}/" .format(Department.objects.get(name="Departamento2").id))
self.assertEquals(response.status_code, 403)

def test_access_denied_low_role_profit(self):
Expand All @@ -452,7 +478,7 @@ def test_access_denied_low_role_profit(self):
c = Client()
c.login(username="emp1", password="123456")

response = c.get("/department/ajaxProfit/{0}/" .format( Department.objects.get(name="Departamento2").id))
response = c.get("/department/ajaxProfit/{0}/" .format(Department.objects.get(name="Departamento2").id))
self.assertEquals(response.status_code, 403)

def test_access_ok_executive_profit(self):
Expand All @@ -462,7 +488,7 @@ def test_access_ok_executive_profit(self):
c = Client()
c.login(username="emp2", password="123456")

response = c.get("/department/ajaxProfit/{0}/" .format( Department.objects.get(name="Departamento2").id))
response = c.get("/department/ajaxProfit/{0}/" .format(Department.objects.get(name="Departamento2").id))
self.assertEquals(response.status_code, 200)

def test_access_other_company_executive_profit(self):
Expand Down
Loading

0 comments on commit 118438f

Please sign in to comment.