summaryrefslogtreecommitdiff
path: root/addons/project_long_term/test
diff options
context:
space:
mode:
authorFabien Pinckaers <fp@tinyerp.com>2011-10-26 01:31:41 +0200
committerFabien Pinckaers <fp@tinyerp.com>2011-10-26 01:31:41 +0200
commit0d2ae40a70ba3be3ccf8e439b4ed92a1ec4719d6 (patch)
tree9edce01a77687bc4f2c07b218c2bbffea35853cf /addons/project_long_term/test
parent68adb9de7e729dd5bb62ca9bc60c584d02ec3563 (diff)
[FIX] Complete refactoring of project_long_term, with following changes:
do not use resources but users on phases: - to be consistent with project members and task responsible - if the user is linked to a resource, it uses the calendar of the resource (holidays for example) better YML tests Complete rewrite of the scheduling mechanism: - Schedule phases: - write project.user.allocation based on scheduling - schedule resources based on members on the project - new constraint: force some users on a phase - Schedule tasks: - set user if no user on task - set start and end date some useability improvements We still have to work on better Gantt view but I think the scheduling is working correctly now. bzr revid: fp@tinyerp.com-20111025233141-cgctwe8spxhko2gn
Diffstat (limited to 'addons/project_long_term/test')
-rw-r--r--addons/project_long_term/test/phase_constraint.yml3
-rw-r--r--addons/project_long_term/test/project_schedule_consecutive_day.yml9
-rw-r--r--addons/project_long_term/test/project_schedule_without_wroking_hour.yml3
-rw-r--r--addons/project_long_term/test/schedule_phase_tasks.yml90
-rw-r--r--addons/project_long_term/test/schedule_project_phases.yml40
-rw-r--r--addons/project_long_term/test/schedule_project_tasks.yml26
-rw-r--r--addons/project_long_term/test/test_schedule_phases_case1.yml8
-rw-r--r--addons/project_long_term/test/test_schedule_phases_case2.yml2
-rw-r--r--addons/project_long_term/test/test_schedule_tasks_case1.yml9
9 files changed, 27 insertions, 163 deletions
diff --git a/addons/project_long_term/test/phase_constraint.yml b/addons/project_long_term/test/phase_constraint.yml
index ad1a3db095e..f4fa09e6e38 100644
--- a/addons/project_long_term/test/phase_constraint.yml
+++ b/addons/project_long_term/test/phase_constraint.yml
@@ -5,6 +5,8 @@
name: "Develop Yaml Project Module"
date_start: !eval time.strftime('%Y-%m-%d')
resource_calendar_id: resource.timesheet_group1
+ members:
+ - base.user_admin
-
And I create three human ressources to work on this project, an analyst.
-
@@ -43,7 +45,6 @@
name: "Analysis"
product_uom: product.uom_day
project_id: project_project_developyamlproject0
- responsible_id: project.res_users_analyst
state: draft
-
diff --git a/addons/project_long_term/test/project_schedule_consecutive_day.yml b/addons/project_long_term/test/project_schedule_consecutive_day.yml
index 10cfc7b6b9c..cffe06a9ff9 100644
--- a/addons/project_long_term/test/project_schedule_consecutive_day.yml
+++ b/addons/project_long_term/test/project_schedule_consecutive_day.yml
@@ -4,6 +4,8 @@
!record {model: project.project, id: project_project_developyamlproject_2}:
name: "Develop Yaml Project Module"
date_start: !eval time.strftime('%Y-%m-%d')
+ members:
+ - base.user_admin
-
I have set Working Time from Monday to Friday from 9am to 17pm.
@@ -107,7 +109,6 @@
!record {model: project.compute.phases, id: project_compute_phases_0}:
project_id: project_project_developyamlproject_2
target_project: one
-
-
Schedule project phases using Compute Phase Scheduling
-
@@ -120,7 +121,7 @@
!python {model: project.project}: |
proj=self.browse(cr, uid, [ref("project_project_developyamlproject_2")])[0]
for phase in proj.phase_ids:
- if (not phase.responsible_id) or (not phase.date_start) or (not phase.date_end):
- raise AssertionError("Phases not scheduled")
-
+ if (not phase.date_start) or (not phase.date_end):
+ raise AssertionError("Phases not scheduled")
+
diff --git a/addons/project_long_term/test/project_schedule_without_wroking_hour.yml b/addons/project_long_term/test/project_schedule_without_wroking_hour.yml
index 61a8539585a..4fe7687425b 100644
--- a/addons/project_long_term/test/project_schedule_without_wroking_hour.yml
+++ b/addons/project_long_term/test/project_schedule_without_wroking_hour.yml
@@ -15,7 +15,6 @@
product_uom: product.uom_day
name: "Analysis Flow for Yaml"
project_id: project_project_developyamlproject_2
- responsible_id: project.res_users_analyst
state: draft
-
@@ -71,7 +70,7 @@
!python {model: project.project}: |
proj=self.browse(cr, uid, [ref("project_project_developyamlproject_2")])[0]
for phase in proj.phase_ids:
- if (not phase.responsible_id) or (not phase.date_start) or (not phase.date_end):
+ if (not phase.date_start) or (not phase.date_end):
raise AssertionError("Phases not scheduled")
diff --git a/addons/project_long_term/test/schedule_phase_tasks.yml b/addons/project_long_term/test/schedule_phase_tasks.yml
deleted file mode 100644
index be22f778cee..00000000000
--- a/addons/project_long_term/test/schedule_phase_tasks.yml
+++ /dev/null
@@ -1,90 +0,0 @@
--
- Create project 'Develop an outlook-openerp synchronization plugin'
--
- !record {model: project.project, id: project_project_project4}:
- name: Develop an outlook-openerp synchronization plugin
- members:
- - project.res_users_project_manager
- - project.res_users_technical_leader
- - project.res_users_developer
- - project.res_users_designer
- - project.res_users_tester
- - project.res_users_analyst
- - project.res_users_finacial_manager
--
- Create phase 'Develop GUI' in Outlook
--
- !record {model: project.phase, id: project_phase_phase0}:
- date_start: !eval time.strftime("%Y-%m-%d")
- duration: 200.0
- name: Develop GUI in Outlook
- product_uom: product.uom_day
- project_id: project_project_project4
- state: draft
- resource_ids:
- - resource_id: project_long_term.resource_analyst
- - resource_id: project_long_term.resource_developer
- - resource_id: project_long_term.resource_designer
- - resource_id: project_long_term.resource_tester
- - resource_id: project_long_term.resource_project_manager
-
--
- Create the phase task 'Develop GUI for Server Configuration'
--
- !record {model: project.task, id: project_task_t0}:
- name: Develop GUI for Server Configuration
- planned_hours: 20.0
- remaining_hours: 20.0
- state: draft
- phase_id: project_phase_phase0
- project_id: project_project_project4
-
-
--
- Create the phase task 'Develop GUI for Modules Configuration'
--
- !record {model: project.task, id: project_task_t1}:
- name: Develop GUI for Modules Configuration
- planned_hours: 25.0
- remaining_hours: 25.0
- state: draft
- phase_id: project_phase_phase0
- project_id: project_project_project4
-
--
- Create the phase task 'Develop GUI for OpenERP Synchronisation'
--
- !record {model: project.task, id: project_task_t2}:
- name: Develop GUI for OpenERP Synchronisation
- planned_hours: 30.0
- remaining_hours: 30.0
- state: draft
- phase_id: project_phase_phase0
- project_id: project_project_project4
-
--
- Create the phase task 'Design required GUI/Menus'
--
- !record {model: project.task, id: project_task_3}:
- name: Design required GUI/Menus
- planned_hours: 25.0
- remaining_hours: 25.0
- state: draft
- phase_id: project_phase_phase0
- project_id: project_project_project4
-
--
- Schedule phase tasks
--
- !python {model: project.phase}: |
- res = self.schedule_tasks(cr, uid, [ref("project_phase_phase0")])
-
--
- Check if tasks scheduled, check that either of task's start_date, end_date and user_id is not null
--
- !python {model: project.phase}: |
- phase = self.browse(cr, uid, [ref("project_phase_phase0")])[0]
- for task in phase.task_ids:
- if (not task.date_start) or (not task.date_end):
- raise AssertionError("Phase Tasks not scheduled: %d uid=%r start=%r end=%r" % \
- (task.id, task.user_id, task.date_start, task.date_end))
diff --git a/addons/project_long_term/test/schedule_project_phases.yml b/addons/project_long_term/test/schedule_project_phases.yml
index 4bc6549bf35..550787fe867 100644
--- a/addons/project_long_term/test/schedule_project_phases.yml
+++ b/addons/project_long_term/test/schedule_project_phases.yml
@@ -31,28 +31,6 @@
name: Establishing Project Feasibility
product_uom: product.uom_day
project_id: project_project_worldbanksproject0
-
--
- Resource1
--
- !record {model: project.resource.allocation, id: res_phase1}:
- resource_id: project_long_term.resource_project_manager
- phase_id: project_phase_definingclientsbasicideaofproject0
-
--
- Resource2
--
- !record {model: project.resource.allocation, id: res_phase2}:
- resource_id: project_long_term.resource_analyst
- phase_id: project_phase_definingclientsbasicideaofproject0
-
--
- Resource3
--
- !record {model: project.resource.allocation, id: res_phase3}:
- resource_id: project_long_term.resource_technical_leader
- phase_id: project_phase_definingclientsbasicideaofproject0
-
-
Create the phase task 'Develop GUI for Server Configuration'
-
@@ -85,20 +63,6 @@
project_id: project_project_worldbanksproject0
-
- Resource4
--
- !record {model: project.resource.allocation, id: res_phase4}:
- resource_id: project_long_term.resource_developer
- phase_id: project_phase_preparationofengineeringdesigns0
-
--
- Resource5
--
- !record {model: project.resource.allocation, id: res_phase5}:
- resource_id: project_long_term.resource_designer
- phase_id: project_phase_preparationofengineeringdesigns0
-
--
Create the phase task 'Develop GUI for Client Configuration'
-
!record {model: project.task, id: project_task_t2}:
@@ -210,7 +174,7 @@
!python {model: project.project}: |
prj=self.browse(cr, uid, [ref("project_project_worldbanksproject0")])[0]
for phase in prj.phase_ids:
- if (not phase.responsible_id) or (not phase.date_start) or (not phase.date_end):
- raise AssertionError("Tasks not scheduled")
+ if (not phase.date_start) or (not phase.date_end):
+ raise AssertionError("Tasks not scheduled")
diff --git a/addons/project_long_term/test/schedule_project_tasks.yml b/addons/project_long_term/test/schedule_project_tasks.yml
index 825b7c404d9..17db7ef8038 100644
--- a/addons/project_long_term/test/schedule_project_tasks.yml
+++ b/addons/project_long_term/test/schedule_project_tasks.yml
@@ -11,26 +11,17 @@
- project.res_users_tester
- project.res_users_analyst
- project.res_users_finacial_manager
-
+
-
Create phase 'Develop GUI' in thunderbird
-
!record {model: project.phase, id: project_phase_phase1}:
- date_start: !eval time.strftime('%Y-%m-%d')
+ date_start: !eval time.strftime('%Y-%m-%d %H:%M:%S')
duration: 200.0
name: Develop GUI in thunderbird
product_uom: product.uom_day
project_id: project_project_project1
state: draft
- resource_ids:
- - resource_id: project_long_term.resource_analyst
- useability: 80.0
- - resource_id: project_long_term.resource_developer
- useability: 30.0
- - resource_id: project_long_term.resource_designer
- useability: 30.0
-
-
-
Create the phase task 'Develop GUI for Server Configuration'
-
@@ -76,8 +67,7 @@
phase_id: project_phase_phase1
project_id: project_project_project1
user_id: project.res_users_designer
-
-
+
-
Schedule tasks
-
@@ -88,7 +78,9 @@
Check if tasks scheduled, check that either of task's start_date, end_date and user_id is not null
-
!python {model: project.project}: |
- prj = self.browse(cr, uid, [ref("project_project_project1")])[0]
- for task in prj.tasks:
- if (not task.user_id) or (not task.date_start) or (not task.date_end):
- raise AssertionError("Project Tasks not scheduled")
+ prj = self.browse(cr, uid, [ref("project_project_project1")])[0]
+ for task in prj.tasks:
+ if task.state in ('done','cancelled'):
+ continue
+ if (not task.user_id) or (not task.date_start) or (not task.date_end):
+ raise AssertionError("Project tasks not scheduled!")
diff --git a/addons/project_long_term/test/test_schedule_phases_case1.yml b/addons/project_long_term/test/test_schedule_phases_case1.yml
index ba091a29916..ef8d0410439 100644
--- a/addons/project_long_term/test/test_schedule_phases_case1.yml
+++ b/addons/project_long_term/test/test_schedule_phases_case1.yml
@@ -63,10 +63,12 @@
import datetime
from dateutil.relativedelta import *
start = (datetime.date.today()).strftime('%Y-%m-%d')
- end = (datetime.date.today() + relativedelta(days=2)).strftime('%Y-%m-%d')
+ end = (datetime.date.today() + relativedelta(days=1)).strftime('%Y-%m-%d 17:00:00')
first_phase = self.browse(cr, uid, ref('project_phase_firstphase0_case1'))
- assert (first_phase.date_start == start and first_phase.date_end == end),'Dates are wrong!'
+ assert (first_phase.date_start[:10] == start),'Start dates are wrong: %s != %s !' % (first_phase.date_start, start)
+ assert (first_phase.date_end >= end),'End dates are wrong: %s <%s!' % (first_phase.date_end, end)
+
second_phase = self.browse(cr, uid, ref('project_phase_secondphase0_case2'))
start = first_phase.date_end
end = (datetime.date.today() + relativedelta(days=5)).strftime('%Y-%m-%d')
- assert (second_phase.date_start == start and second_phase.date_end == end),'Dates are wrong!'
+ assert (second_phase.date_start >= start and second_phase.date_end >= end),'Dates are wrong on second phase!'
diff --git a/addons/project_long_term/test/test_schedule_phases_case2.yml b/addons/project_long_term/test/test_schedule_phases_case2.yml
index 67a7332cf5b..35173a897a3 100644
--- a/addons/project_long_term/test/test_schedule_phases_case2.yml
+++ b/addons/project_long_term/test/test_schedule_phases_case2.yml
@@ -147,7 +147,7 @@
I create a phase 'Initial Phase' for project 'Development and Testing'.
-
!record {model: project.phase, id: project_phase_phase0}:
- date_start: '2011-01-03'
+ date_start: '2011-01-03 08:00:00'
duration: 0.0
name: Initial Phase
product_uom: product.uom_day
diff --git a/addons/project_long_term/test/test_schedule_tasks_case1.yml b/addons/project_long_term/test/test_schedule_tasks_case1.yml
index d40b61d6b3a..3bb0ea87c43 100644
--- a/addons/project_long_term/test/test_schedule_tasks_case1.yml
+++ b/addons/project_long_term/test/test_schedule_tasks_case1.yml
@@ -38,7 +38,7 @@
- res_users_user0
- res_users_user1
phase_ids:
- - date_start: '2011-01-06'
+ - date_start: '2011-01-06 08:00:00'
duration: 2.0
name: Phase A
product_uom: product.uom_day
@@ -184,16 +184,11 @@
Now I create one phase for the project.
-
!record {model: project.phase, id: project_phase_phasea0}:
- date_start: '2011-01-06'
+ date_start: '2011-01-06 08:00:00'
duration: 2.0
name: Phase A
product_uom: product.uom_day
project_id: project_project_projecta0
- resource_ids:
- - project_id: project_project_projecta0
- resource_id: resource_resource_user0
- - project_id: project_project_projecta0
- resource_id: resource_resource_user1
state: draft
task_ids:
- delay_hours: 0.0