diff --git a/addons/project_long_term/__openerp__.py b/addons/project_long_term/__openerp__.py index 795e0d758f8..05968811a4a 100644 --- a/addons/project_long_term/__openerp__.py +++ b/addons/project_long_term/__openerp__.py @@ -42,12 +42,13 @@ Features. "test": [ 'test/schedule_project_phases.yml', 'test/project_schedule_consecutive_day.yml', - 'test/project_schedule_without_wroking_hour.yml' + 'test/project_schedule_without_wroking_hour.yml', # 'test/schedule_project_tasks.yml', # 'test/test_project_long_term.yml', # 'test/schedule_phase_tasks.yml', # 'test/test_schedule_phases_case1.yml', # 'test/test_schedule_phases_case2.yml', + 'test/test_schedule_tasks_case1.yml', ], "update_xml": [ "security/ir.model.access.csv", diff --git a/addons/project_long_term/test/test_schedule_tasks_case1.yml b/addons/project_long_term/test/test_schedule_tasks_case1.yml new file mode 100644 index 00000000000..78bf5e318a4 --- /dev/null +++ b/addons/project_long_term/test/test_schedule_tasks_case1.yml @@ -0,0 +1,263 @@ +- + In order to test scheduling of tasks, I create four tasks with different sequences and schedule them. +- + I create address for first user. +- + !record {model: res.partner.address, id: res_partner_address_user0}: + name: User 1 +- + I create address for second user. +- + !record {model: res.partner.address, id: res_partner_address_user1}: + name: User 2 +- + I create first user. +- + !record {model: res.users, id: res_users_user0}: + address_id: res_partner_address_user0 + company_id: base.main_company + context_lang: en_US + groups_id: + - base.group_partner_manager + - base.group_user + login: user1 + name: User 1 + password: user1 +- + I create second user. +- + !record {model: res.users, id: res_users_user1}: + address_id: res_partner_address_user1 + company_id: base.main_company + context_lang: en_US + groups_id: + - base.group_partner_manager + - base.group_user + login: user2 + name: User 2 + password: user2 +- + I create a Project. +- + !record {model: project.project, id: project_project_projecta0}: + balance: 0.0 + credit: 0.0 + currency_id: base.EUR + debit: 0.0 + effective_hours: 0.0 + name: Project A + members: + - res_users_user0 + - res_users_user1 + phase_ids: + - date_start: '2011-01-06' + duration: 2.0 + name: Phase A + product_uom: product.uom_day + state: draft + task_ids: + - delay_hours: 0.0 + effective_hours: 0.0 + name: Task D + planned_hours: 5.0 + remaining_hours: 5.0 + state: draft + total_hours: 5.0 + - delay_hours: 0.0 + effective_hours: 0.0 + name: Task C + planned_hours: 5.0 + remaining_hours: 5.0 + sequence: 11 + state: draft + total_hours: 5.0 + - delay_hours: 0.0 + effective_hours: 0.0 + name: Task B + planned_hours: 5.0 + remaining_hours: 5.0 + sequence: 13 + state: draft + total_hours: 5.0 + - delay_hours: 0.0 + effective_hours: 0.0 + name: Task A + planned_hours: 5.0 + remaining_hours: 5.0 + sequence: 14 + state: draft + total_hours: 5.0 + planned_hours: 20.0 + progress_rate: 0.0 + quantity: 0.0 + quantity_max: 0.0 + state: open + tasks: + - delay_hours: 0.0 + effective_hours: 0.0 + name: Task D + planned_hours: 5.0 + remaining_hours: 5.0 + state: draft + total_hours: 5.0 + - delay_hours: 0.0 + effective_hours: 0.0 + name: Task C + planned_hours: 5.0 + remaining_hours: 5.0 + sequence: 11 + state: draft + total_hours: 5.0 + - delay_hours: 0.0 + effective_hours: 0.0 + name: Task B + planned_hours: 5.0 + remaining_hours: 5.0 + sequence: 13 + state: draft + total_hours: 5.0 + - delay_hours: 0.0 + effective_hours: 0.0 + name: Task A + planned_hours: 5.0 + remaining_hours: 5.0 + sequence: 14 + state: draft + total_hours: 5.0 + total_hours: 15.0 +- + I create first task with highest sequence. +- + !record {model: project.task, id: project_task_taska0}: + delay_hours: 0.0 + effective_hours: 0.0 + name: Task A + planned_hours: 5.0 + project_id: project_project_projecta0 + remaining_hours: 5.0 + sequence: 14 + state: draft + total_hours: 5.0 +- + I create second task. +- + !record {model: project.task, id: project_task_taskb0}: + delay_hours: 0.0 + effective_hours: 0.0 + name: Task B + planned_hours: 5.0 + project_id: project_project_projecta0 + remaining_hours: 5.0 + sequence: 13 + state: draft + total_hours: 5.0 +- + I create third task. +- + !record {model: project.task, id: project_task_taskc0}: + delay_hours: 0.0 + effective_hours: 0.0 + name: Task C + planned_hours: 5.0 + project_id: project_project_projecta0 + remaining_hours: 5.0 + sequence: 11 + state: draft + total_hours: 5.0 +- + I create fourth task with lowest sequence. +- + !record {model: project.task, id: project_task_taskd0}: + delay_hours: 0.0 + effective_hours: 0.0 + name: Task D + planned_hours: 5.0 + project_id: project_project_projecta0 + remaining_hours: 5.0 + state: draft + total_hours: 5.0 +- + Now I create a resource for first user. +- + !record {model: resource.resource, id: resource_resource_user0}: + name: User 1 + resource_type: user + time_efficiency: 1.0 + user_id: res_users_user0 +- + I create a resource for second user. +- + !record {model: resource.resource, id: resource_resource_user1}: + name: User 2 + resource_type: user + time_efficiency: 1.0 + user_id: res_users_user1 +- + Now I create one phase for the project. +- + !record {model: project.phase, id: project_phase_phasea0}: + date_start: '2011-01-06' + 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 + effective_hours: 0.0 + name: Task D + planned_hours: 5.0 + project_id: project_project_projecta0 + remaining_hours: 5.0 + state: draft + total_hours: 5.0 + - delay_hours: 0.0 + effective_hours: 0.0 + name: Task C + planned_hours: 5.0 + project_id: project_project_projecta0 + remaining_hours: 5.0 + sequence: 11 + state: draft + total_hours: 5.0 + - delay_hours: 0.0 + effective_hours: 0.0 + name: Task B + planned_hours: 5.0 + project_id: project_project_projecta0 + remaining_hours: 5.0 + sequence: 13 + state: draft + total_hours: 5.0 + - delay_hours: 0.0 + effective_hours: 0.0 + name: Task A + planned_hours: 5.0 + project_id: project_project_projecta0 + remaining_hours: 5.0 + sequence: 14 + state: draft + total_hours: 5.0 +- + Now I create a record to schedule the tasks of project. +- + !record {model: project.compute.tasks, id: project_compute_tasks0}: + project_id: project_project_projecta0 +- + I schedule the tasks. +- + !python {model: project.compute.tasks}: | + self.compute_date(cr, uid, [ref("project_compute_tasks0")]) +- + I check that whether the tasks now allocated to respected resources or not. +- + !python {model: project.task}: | + task_ids = self.search(cr, uid, [('project_id','=',ref('project_project_projecta0'))]) + for task in self.browse(cr, uid, task_ids): + if (not task.user_id) or (not task.date_start) or (not task.date_end): + raise AssertionError("Tasks are not scheduled.")