mirror of
https://github.com/frappe/erpnext.git
synced 2026-06-08 15:42:52 +00:00
[tests] Test case fixes for task and project (#11445)
* [tests] Test case fixes for task and project * Removed hard-coded dates from test cases * Codacy fix
This commit is contained in:
@@ -69,7 +69,6 @@ class Task(NestedSet):
|
|||||||
self.reschedule_dependent_tasks()
|
self.reschedule_dependent_tasks()
|
||||||
self.update_project()
|
self.update_project()
|
||||||
self.unassign_todo()
|
self.unassign_todo()
|
||||||
rebuild_tree("Task", "parent_task")
|
|
||||||
|
|
||||||
def unassign_todo(self):
|
def unassign_todo(self):
|
||||||
if self.status == "Closed" or self.status == "Cancelled":
|
if self.status == "Closed" or self.status == "Cancelled":
|
||||||
@@ -111,16 +110,20 @@ class Task(NestedSet):
|
|||||||
frappe.throw(_("Circular Reference Error"), CircularReferenceError)
|
frappe.throw(_("Circular Reference Error"), CircularReferenceError)
|
||||||
if b[0]:
|
if b[0]:
|
||||||
task_list.append(b[0])
|
task_list.append(b[0])
|
||||||
|
|
||||||
if count == 15:
|
if count == 15:
|
||||||
break
|
break
|
||||||
|
|
||||||
def reschedule_dependent_tasks(self):
|
def reschedule_dependent_tasks(self):
|
||||||
end_date = self.exp_end_date or self.act_end_date
|
end_date = self.exp_end_date or self.act_end_date
|
||||||
if end_date:
|
if end_date:
|
||||||
for task_name in frappe.db.sql("""select name from `tabTask` as parent where parent.project = %(project)s and parent.name in \
|
for task_name in frappe.db.sql("""
|
||||||
(select parent from `tabTask Depends On` as child where child.task = %(task)s and child.project = %(project)s)""",
|
select name from `tabTask` as parent
|
||||||
{'project': self.project, 'task':self.name }, as_dict=1):
|
where parent.project = %(project)s
|
||||||
|
and parent.name in (
|
||||||
|
select parent from `tabTask Depends On` as child
|
||||||
|
where child.task = %(task)s and child.project = %(project)s)
|
||||||
|
""", {'project': self.project, 'task':self.name }, as_dict=1):
|
||||||
task = frappe.get_doc("Task", task_name.name)
|
task = frappe.get_doc("Task", task_name.name)
|
||||||
if task.exp_start_date and task.exp_end_date and task.exp_start_date < getdate(end_date) and task.status == "Open":
|
if task.exp_start_date and task.exp_end_date and task.exp_start_date < getdate(end_date) and task.status == "Open":
|
||||||
task_duration = date_diff(task.exp_end_date, task.exp_start_date)
|
task_duration = date_diff(task.exp_end_date, task.exp_start_date)
|
||||||
|
|||||||
@@ -1,15 +0,0 @@
|
|||||||
[
|
|
||||||
{
|
|
||||||
"status": "Open",
|
|
||||||
"subject": "_Test Task",
|
|
||||||
"name": "task001"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"status": "Open",
|
|
||||||
"subject": "_Test Task 1"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"status": "Open",
|
|
||||||
"subject": "_Test Task 2"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
@@ -5,137 +5,61 @@ import frappe
|
|||||||
import unittest
|
import unittest
|
||||||
from frappe.utils import getdate, nowdate, add_days
|
from frappe.utils import getdate, nowdate, add_days
|
||||||
|
|
||||||
# test_records = frappe.get_test_records('Task')
|
|
||||||
|
|
||||||
from erpnext.projects.doctype.task.task import CircularReferenceError
|
from erpnext.projects.doctype.task.task import CircularReferenceError
|
||||||
|
|
||||||
class TestTask(unittest.TestCase):
|
class TestTask(unittest.TestCase):
|
||||||
def test_circular_reference(self):
|
def test_circular_reference(self):
|
||||||
|
task1 = create_task("_Test Task 1", nowdate(), add_days(nowdate(), 10))
|
||||||
|
task2 = create_task("_Test Task 2", add_days(nowdate(), 11), add_days(nowdate(), 15), task1.name)
|
||||||
|
task3 = create_task("_Test Task 3", add_days(nowdate(), 11), add_days(nowdate(), 15), task2.name)
|
||||||
|
|
||||||
task1 = frappe.new_doc('Task')
|
task1.reload()
|
||||||
task1.update({
|
|
||||||
"status": "Open",
|
|
||||||
"subject": "_Test Task 1",
|
|
||||||
"project": "_Test Project",
|
|
||||||
"exp_start_date": "2015-1-1",
|
|
||||||
"exp_end_date": "2015-1-10"
|
|
||||||
})
|
|
||||||
task1.save()
|
|
||||||
|
|
||||||
task2 = frappe.new_doc('Task')
|
|
||||||
task2.update({
|
|
||||||
"status": "Open",
|
|
||||||
"subject": "_Test Task 2",
|
|
||||||
"project": "_Test Project",
|
|
||||||
"exp_start_date": "2015-1-11",
|
|
||||||
"exp_end_date": "2015-1-15",
|
|
||||||
"depends_on":[
|
|
||||||
{
|
|
||||||
"task": task1.name
|
|
||||||
}
|
|
||||||
]
|
|
||||||
})
|
|
||||||
task2.save()
|
|
||||||
|
|
||||||
task3 = frappe.new_doc('Task')
|
|
||||||
task3.update({
|
|
||||||
"status": "Open",
|
|
||||||
"subject": "_Test Task 2",
|
|
||||||
"project": "_Test Project",
|
|
||||||
"exp_start_date": "2015-1-11",
|
|
||||||
"exp_end_date": "2015-1-15",
|
|
||||||
"depends_on":[
|
|
||||||
{
|
|
||||||
"task": task2.name
|
|
||||||
}
|
|
||||||
]
|
|
||||||
})
|
|
||||||
task3.save()
|
|
||||||
|
|
||||||
task1.append("depends_on", {
|
task1.append("depends_on", {
|
||||||
"task": task3.name
|
"task": task3.name
|
||||||
})
|
})
|
||||||
|
|
||||||
self.assertRaises(CircularReferenceError, task1.save)
|
self.assertRaises(CircularReferenceError, task1.save)
|
||||||
|
|
||||||
task1.set("depends_on", [])
|
task1.set("depends_on", [])
|
||||||
task1.save()
|
task1.save()
|
||||||
|
|
||||||
task4 = frappe.new_doc('Task')
|
task4 = create_task("_Test Task 4", nowdate(), add_days(nowdate(), 15), task1.name)
|
||||||
task4.update({
|
|
||||||
"status": "Open",
|
|
||||||
"subject": "_Test Task 1",
|
|
||||||
"exp_start_date": "2015-1-1",
|
|
||||||
"exp_end_date": "2015-1-15",
|
|
||||||
"depends_on":[
|
|
||||||
{
|
|
||||||
"task": task1.name
|
|
||||||
}
|
|
||||||
]
|
|
||||||
})
|
|
||||||
task4.save()
|
|
||||||
|
|
||||||
task3.append("depends_on", {
|
task3.append("depends_on", {
|
||||||
"task": task4.name
|
"task": task4.name
|
||||||
})
|
})
|
||||||
|
|
||||||
def test_reschedule_dependent_task(self):
|
def test_reschedule_dependent_task(self):
|
||||||
task1 = frappe.new_doc('Task')
|
task1 = create_task("_Test Task 1", nowdate(), add_days(nowdate(), 10))
|
||||||
task1.update({
|
|
||||||
"status": "Open",
|
|
||||||
"subject": "_Test Task 1",
|
|
||||||
"project": "_Test Project",
|
|
||||||
"exp_start_date": "2015-1-1",
|
|
||||||
"exp_end_date": "2015-1-10"
|
|
||||||
})
|
|
||||||
task1.save()
|
|
||||||
|
|
||||||
task2 = frappe.new_doc('Task')
|
task2 = create_task("_Test Task 2", add_days(nowdate(), 11), add_days(nowdate(), 15), task1.name)
|
||||||
task2.update({
|
task2.get("depends_on")[0].project = "_Test Project"
|
||||||
"status": "Open",
|
|
||||||
"subject": "_Test Task 2",
|
|
||||||
"project": "_Test Project",
|
|
||||||
"exp_start_date": "2015-1-11",
|
|
||||||
"exp_end_date": "2015-1-15",
|
|
||||||
"depends_on":[
|
|
||||||
{
|
|
||||||
"task": task1.name,
|
|
||||||
"project": "_Test Project"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
})
|
|
||||||
task2.save()
|
task2.save()
|
||||||
|
|
||||||
task3 = frappe.new_doc('Task')
|
task3 = create_task("_Test Task 3", add_days(nowdate(), 11), add_days(nowdate(), 15), task2.name)
|
||||||
task3.update({
|
task3.get("depends_on")[0].project = "_Test Project"
|
||||||
"status": "Open",
|
|
||||||
"subject": "_Test Task 3",
|
|
||||||
"project": "_Test Project",
|
|
||||||
"exp_start_date": "2015-1-16",
|
|
||||||
"exp_end_date": "2015-1-18",
|
|
||||||
"depends_on":[
|
|
||||||
{
|
|
||||||
"task": task2.name,
|
|
||||||
"project": "_Test Project"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
})
|
|
||||||
task3.save()
|
task3.save()
|
||||||
|
|
||||||
task1.update({
|
task1.update({
|
||||||
"exp_end_date": "2015-1-20"
|
"exp_end_date": add_days(nowdate(), 20)
|
||||||
})
|
})
|
||||||
task1.save()
|
task1.save()
|
||||||
|
|
||||||
self.assertEqual(frappe.db.get_value("Task", task2.name, "exp_start_date"), getdate('2015-1-21'))
|
self.assertEqual(frappe.db.get_value("Task", task2.name, "exp_start_date"),
|
||||||
self.assertEqual(frappe.db.get_value("Task", task2.name, "exp_end_date"), getdate('2015-1-25'))
|
getdate(add_days(nowdate(), 21)))
|
||||||
|
self.assertEqual(frappe.db.get_value("Task", task2.name, "exp_end_date"),
|
||||||
|
getdate(add_days(nowdate(), 25)))
|
||||||
|
|
||||||
self.assertEqual(frappe.db.get_value("Task", task3.name, "exp_start_date"), getdate('2015-1-26'))
|
self.assertEqual(frappe.db.get_value("Task", task3.name, "exp_start_date"),
|
||||||
self.assertEqual(frappe.db.get_value("Task", task3.name, "exp_end_date"), getdate('2015-1-28'))
|
getdate(add_days(nowdate(), 26)))
|
||||||
|
self.assertEqual(frappe.db.get_value("Task", task3.name, "exp_end_date"),
|
||||||
|
getdate(add_days(nowdate(), 30)))
|
||||||
|
|
||||||
def test_close_assignment(self):
|
def test_close_assignment(self):
|
||||||
task = frappe.new_doc("Task")
|
if not frappe.db.exists("Task", "Test Close Assignment"):
|
||||||
task.subject = "Test Close Assignment"
|
task = frappe.new_doc("Task")
|
||||||
task.insert()
|
task.subject = "Test Close Assignment"
|
||||||
|
task.insert()
|
||||||
|
|
||||||
def assign():
|
def assign():
|
||||||
from frappe.desk.form import assign_to
|
from frappe.desk.form import assign_to
|
||||||
@@ -147,8 +71,10 @@ class TestTask(unittest.TestCase):
|
|||||||
})
|
})
|
||||||
|
|
||||||
def get_owner_and_status():
|
def get_owner_and_status():
|
||||||
return frappe.db.get_value("ToDo", filters={"reference_type": task.doctype, "reference_name": task.name,
|
return frappe.db.get_value("ToDo",
|
||||||
"description": "Close this task"}, fieldname=("owner", "status"), as_dict=True)
|
filters={"reference_type": task.doctype, "reference_name": task.name,
|
||||||
|
"description": "Close this task"},
|
||||||
|
fieldname=("owner", "status"), as_dict=True)
|
||||||
|
|
||||||
assign()
|
assign()
|
||||||
todo = get_owner_and_status()
|
todo = get_owner_and_status()
|
||||||
@@ -164,16 +90,29 @@ class TestTask(unittest.TestCase):
|
|||||||
self.assertEquals(todo.status, "Closed")
|
self.assertEquals(todo.status, "Closed")
|
||||||
|
|
||||||
def test_overdue(self):
|
def test_overdue(self):
|
||||||
task = frappe.get_doc({
|
task = create_task("Testing Overdue", add_days(nowdate(), -10), add_days(nowdate(), -5))
|
||||||
"doctype":"Task",
|
|
||||||
"subject": "Testing Overdue",
|
|
||||||
"status": "Open",
|
|
||||||
"exp_end_date": add_days(nowdate(), -1)
|
|
||||||
})
|
|
||||||
|
|
||||||
task.insert()
|
|
||||||
|
|
||||||
from erpnext.projects.doctype.task.task import set_tasks_as_overdue
|
from erpnext.projects.doctype.task.task import set_tasks_as_overdue
|
||||||
set_tasks_as_overdue()
|
set_tasks_as_overdue()
|
||||||
|
|
||||||
self.assertEquals(frappe.db.get_value("Task", task.name, "status"), "Overdue")
|
self.assertEquals(frappe.db.get_value("Task", task.name, "status"), "Overdue")
|
||||||
|
|
||||||
|
def create_task(subject, start=None, end=None, depends_on=None, project=None):
|
||||||
|
if not frappe.db.exists("Task", subject):
|
||||||
|
task = frappe.new_doc('Task')
|
||||||
|
task.status = "Open"
|
||||||
|
task.subject = subject
|
||||||
|
task.exp_start_date = start or nowdate()
|
||||||
|
task.exp_end_date = end or nowdate()
|
||||||
|
task.project = project or "_Test Project"
|
||||||
|
task.save()
|
||||||
|
else:
|
||||||
|
task = frappe.get_doc("Task", subject)
|
||||||
|
|
||||||
|
if depends_on:
|
||||||
|
task.append("depends_on", {
|
||||||
|
"task": depends_on
|
||||||
|
})
|
||||||
|
task.save()
|
||||||
|
|
||||||
|
return task
|
||||||
Reference in New Issue
Block a user