508 lines
20 KiB
YAML
508 lines
20 KiB
YAML
-
|
|
I test project template feature.
|
|
-
|
|
I create test project 'OpenERP Test Programme'.
|
|
-
|
|
!record {model: project.project, id: project_project_testprogramme0}:
|
|
company_id: base.main_company
|
|
name: OpenERP Training Programm
|
|
-
|
|
I assign an email address to Administrator for communications.
|
|
-
|
|
!record {model: res.users, id: base.user_root}:
|
|
user_email: admin@openerp.com
|
|
-
|
|
I create analytic account for assigned partner in project.
|
|
-
|
|
!record {model: account.analytic.account, id: account_analytic_account0}:
|
|
name : account_analytic_account
|
|
partner_id: base.res_partner_asus
|
|
-
|
|
I create project 'OpenERP Training Programme'.
|
|
-
|
|
!record {model: project.project, id: project_project_openerptrainingprogramme0}:
|
|
company_id: base.main_company
|
|
parent_id: account_analytic_account0
|
|
partner_id: base.res_partner_asus
|
|
name: OpenERP Training Programme
|
|
date_start: !eval time.strftime('%Y-%m-%d')
|
|
date: !eval time.strftime('%Y-%m-%d')
|
|
-
|
|
I create task 'Technical Training' for 'OpenERP Training Programme' project.
|
|
-
|
|
!record {model: project.task, id: project_task_technicaltraining0}:
|
|
date_start: !eval time.strftime('%Y-%m-%d %H:%M:%S')
|
|
name: Technical Training
|
|
user_id: base.user_root
|
|
planned_hours: 30.0
|
|
project_id: project_project_openerptrainingprogramme0
|
|
remaining_hours: 30.0
|
|
state: draft
|
|
-
|
|
I create child task 'Training' of 'OpenERP Training Programme' project.
|
|
-
|
|
!record {model: project.task, id: project_task_child0}:
|
|
date_start: !eval time.strftime('%Y-%m-%d %H:%M:%S')
|
|
name: Training
|
|
planned_hours: 30.0
|
|
project_id: project_project_openerptrainingprogramme0
|
|
remaining_hours: 30.0
|
|
state: done
|
|
-
|
|
I create task 'Functional Training' for 'OpenERP Training Programme' project.
|
|
-
|
|
!record {model: project.task, id: project_task_functionaltraining0}:
|
|
date_start: !eval time.strftime('%Y-%m-%d %H:%M:%S')
|
|
name: Functional Training
|
|
planned_hours: 30.0
|
|
project_id: project_project_openerptrainingprogramme0
|
|
remaining_hours: 30.0
|
|
child_ids:
|
|
- project_task_child0
|
|
state: draft
|
|
-
|
|
I set project's task view.
|
|
-
|
|
!python {model: project.task}: |
|
|
context.update({'project_id': ref('project_task_functionaltraining0')})
|
|
self._default_project(cr, uid,context)
|
|
#self.fields_view_get(cr, uid, view_id=None, view_type='form', context=None, toolbar=False, submenu=False)
|
|
-
|
|
I click on Draft button.
|
|
-
|
|
!python {model: project.task}: |
|
|
self.do_draft(cr, uid, [ref("project_task_functionaltraining0")], context={})
|
|
-
|
|
I click on Start task button.
|
|
-
|
|
!python {model: project.task}: |
|
|
self.do_open(cr, uid,[ref("project_task_functionaltraining0")],context={})
|
|
-
|
|
I click Pending button.
|
|
-
|
|
!python {model: project.task}: |
|
|
self.do_pending(cr, uid, [ref("project_task_functionaltraining0")], context={})
|
|
-
|
|
I click on Start task button.
|
|
-
|
|
!python {model: project.task}: |
|
|
self.do_open(cr, uid,[ref("project_task_functionaltraining0")],context={})
|
|
-
|
|
I check is there any child task assigned to 'Functional Training' task.
|
|
-
|
|
!python {model: project.task}: |
|
|
self._check_child_task(cr, uid, [ref("project_task_functionaltraining0")])
|
|
-
|
|
I do some changes on project without define partner.
|
|
-
|
|
!python {model: project.task}: |
|
|
self.onchange_project(cr, uid, [ref("project_task_functionaltraining0")],[])
|
|
-
|
|
I do some changes on project.
|
|
-
|
|
!python {model: project.task}: |
|
|
self.onchange_project(cr, uid, [ref("project_task_functionaltraining0")],ref('project_project_openerptrainingprogramme0'))
|
|
-
|
|
I change the type of project.
|
|
-
|
|
!python {model: project.task}: |
|
|
self._change_type(cr, uid,[ref("project_task_functionaltraining0")], next, context)
|
|
-
|
|
I click on next button for change the type of project task.
|
|
-
|
|
!python {model: project.task}: |
|
|
self.next_type(cr, uid,[ref("project_task_functionaltraining0")], context)
|
|
-
|
|
I click on previous button for go back to previous type of task.
|
|
-
|
|
!python {model: project.task}: |
|
|
self.prev_type(cr, uid,[ref("project_task_functionaltraining0")], context)
|
|
-
|
|
I create work for project's task.
|
|
-
|
|
!record {model: project.task.work, id: project_task_work0}:
|
|
name: Technical Training Task's Work
|
|
task_id: project_task_technicaltraining0
|
|
-
|
|
I create project's Work.
|
|
-
|
|
!python {model: project.task.work}: |
|
|
vals = {
|
|
'name': 'Technical Training',
|
|
'hours': 0.0,
|
|
'task_id': ref('project_task_technicaltraining0'),
|
|
}
|
|
self.create(cr, uid, vals,context={"lang": "en_US", "active_ids": [ref("project_task_functionaltraining0")],"tz": False, "active_id": ref("project_task_functionaltraining0")})
|
|
-
|
|
I add project's Work.
|
|
-
|
|
!python {model: project.task.work}: |
|
|
vals = {
|
|
'name': 'Technical Training',
|
|
'hours': 0.0,
|
|
'task_id': ref('project_task_technicaltraining0'),
|
|
}
|
|
self.write(cr, uid, [ref('project_task_work0')], vals, context={"lang": "en_US", "active_ids": [ref("project_task_functionaltraining0")],"tz": False, "active_id": ref("project_task_functionaltraining0")})
|
|
-
|
|
I get project's Work.
|
|
-
|
|
!python {model: project.project}: |
|
|
self._get_project_work(cr, uid, [ref("project_task_work0")], context={"lang": "en_US", "active_ids": [ref("project_task_functionaltraining0")],"tz": False, "active_id": ref("project_task_functionaltraining0")})
|
|
-
|
|
I change the project's partner if needed.
|
|
-
|
|
!python {model: project.project}: |
|
|
self.onchange_partner_id(cr, uid, [ref("project_project_openerptrainingprogramme0")], part=ref('base.res_partner_asus'), context = {"lang": "en_US", "active_model": "ir.ui.menu", "active_ids": [ref("project.menu_open_view_project_all")],"tz": False, "active_id": ref("project.menu_open_view_project_all")})
|
|
-
|
|
I set 'OpenERP Training Programme' project as project template.
|
|
-
|
|
!python {model: project.project}: |
|
|
self.set_template(cr, uid, [ref("project_project_openerptrainingprogramme0")],
|
|
{"lang": "en_US", "active_model": "ir.ui.menu", "active_ids": [ref("project.menu_open_view_project_all")],
|
|
"tz": False, "active_id": ref("project.menu_open_view_project_all"), })
|
|
-
|
|
I check if project in template state.
|
|
-
|
|
!assert {model: project.project, id: project_project_openerptrainingprogramme0, severity: error, string: Project is in template state}:
|
|
- state == "template"
|
|
-
|
|
I create new project based on this template.
|
|
-
|
|
!python {model: project.project}: |
|
|
new_prj = self.duplicate_template(cr, uid, [ref("project_project_openerptrainingprogramme0")],
|
|
{"lang": "en_US", "active_model": "ir.ui.menu", "active_ids": [ref("project.menu_open_view_project_all")],
|
|
"tz": False, "active_id": ref("project.menu_open_view_project_all"), })
|
|
if not new_prj:
|
|
raise Exception( "New project based on template not created")
|
|
new_id = new_prj['res_id']
|
|
new_prj = self.read(cr, uid, [new_id], ['name', 'state'])[0]
|
|
state = new_prj['state']
|
|
name = new_prj['name']
|
|
assert state == 'open', "Project in %s state. Project created from template project must be in open state"%state
|
|
-
|
|
I reset project template to normal project 'OpenERP Training Programme'.
|
|
-
|
|
!python {model: project.project}: |
|
|
self.reset_project(cr, uid, [ref("project_project_openerptrainingprogramme0")], {"lang": "en_US", "active_ids":
|
|
[ref("project.menu_open_view_project_all")], "tz": False, "active_model":
|
|
"ir.ui.menu", "project_id": False, "active_id": ref("project.menu_open_view_project_all"),
|
|
})
|
|
-
|
|
I check if project in open state.
|
|
-
|
|
!assert {model: project.project, id: project_project_openerptrainingprogramme0, severity: error, string: Project is in open state}:
|
|
- state == "open"
|
|
-
|
|
I test for different project-states.
|
|
-
|
|
Keep project pending.
|
|
-
|
|
!python {model: project.project}: |
|
|
self.set_pending(cr, uid, [ref("project_project_openerptrainingprogramme0")], {"lang": "en_US", "active_ids":
|
|
[ref("project.menu_open_view_project_all")], "tz": False, "active_model":
|
|
"ir.ui.menu", "project_id": False, "active_id": ref("project.menu_open_view_project_all"),
|
|
})
|
|
-
|
|
I check if project in pending state.
|
|
-
|
|
!assert {model: project.project, id: project_project_openerptrainingprogramme0, severity: error, string: Project is in pending state}:
|
|
- state == "pending"
|
|
-
|
|
I cancel the project.
|
|
-
|
|
!python {model: project.project}: |
|
|
self.set_cancel(cr, uid, [ref("project_project_openerptrainingprogramme0")], {"lang": "en_US", "active_ids":
|
|
[ref("project.menu_open_view_project_all")], "tz": False, "active_model":
|
|
"ir.ui.menu", "project_id": False, "active_id": ref("project.menu_open_view_project_all"),
|
|
})
|
|
-
|
|
I check if project in cancel state.
|
|
-
|
|
!assert {model: project.project, id: project_project_openerptrainingprogramme0, severity: error, string: Project is in cancel state}:
|
|
- state == "cancelled"
|
|
-
|
|
Re-open the project.
|
|
-
|
|
!python {model: project.project}: |
|
|
self.set_open(cr, uid, [ref("project_project_openerptrainingprogramme0")], {"lang": "en_US", "active_ids": [ref("project.menu_open_view_project_all")],
|
|
"tz": False, "active_model": "ir.ui.menu", "project_id": False, "active_id":
|
|
ref("project.menu_open_view_project_all"), })
|
|
-
|
|
Re-Check if project in open state.
|
|
-
|
|
!assert {model: project.project, id: project_project_openerptrainingprogramme0, severity: error, string: Project is in open state}:
|
|
- state == "open"
|
|
-
|
|
I test for task work allocation.
|
|
-
|
|
As I cancelled my project before, i check if the task 'Technical Training' is in cancelled state.
|
|
-
|
|
!assert {model: project.task, id: project_task_technicaltraining0, severity: error, string: Task is in cancelled state}:
|
|
- state == "cancelled"
|
|
-
|
|
Now, in order to reactivate the task 'Technical Training', i click on the "Reactivate" button and fill the remaining hour field.
|
|
-
|
|
!record {model: project.task.reevaluate, id: project_task_technicaltraining_remainingwiz0}:
|
|
remaining_hours: 30.0
|
|
- |
|
|
I create the view for reevaluate the task.
|
|
-
|
|
!python {model: project.task.reevaluate}: |
|
|
self.fields_view_get(cr, uid, view_id=None, view_type='form', context=None, toolbar=False, submenu=False)
|
|
- |
|
|
Now get the remaining hours required to close the task.
|
|
-
|
|
!python {model: project.task.reevaluate}: |
|
|
self._get_remaining(cr, uid,{'active_id':ref('project_task_functionaltraining0') })
|
|
- |
|
|
I click the apply button for compute hours.
|
|
-
|
|
!python {model: project.task.reevaluate}: |
|
|
self.compute_hours(cr, uid, [ref('project_task_technicaltraining_remainingwiz0')], {'active_id': ref("project_task_technicaltraining0"),'button_reactivate': True})
|
|
- |
|
|
I check if task 'Technical Training' in open state and for other initial values.
|
|
-
|
|
!assert {model: project.task, id: project_task_technicaltraining0, severity: error, string: Project is in open state}:
|
|
- state == "open"
|
|
- planned_hours == 30
|
|
- remaining_hours == 30
|
|
- delay_hours == 0.0
|
|
- effective_hours == 0.0
|
|
-
|
|
I create a work task entry 'Training on OpenERP modules, models and classes' of 10 hours.
|
|
-
|
|
!record {model: project.task, id: project_task_technicaltraining0, context:{'no_analytic_entry':True}}:
|
|
work_ids:
|
|
- date: !eval time.strftime('%Y-%m-%d %H:%M:%S')
|
|
hours: 10.0
|
|
name: Training on OpenERP modules, models and classes
|
|
user_id: base.user_root
|
|
-
|
|
I check for effective hours and remaining hours, effective_hours must be equal to 10.
|
|
-
|
|
!assert {model: project.task, id: project_task_technicaltraining0, severity: error, string: After work task of 10 hours effective_hours must be equal to 10}:
|
|
- remaining_hours == 20
|
|
- effective_hours == 10.0
|
|
-
|
|
I create a work task entry 'Training on OpenERP xml views' of 10 hours.
|
|
-
|
|
!record {model: project.task, id: project_task_technicaltraining0, context:{'no_analytic_entry':True}}:
|
|
work_ids:
|
|
- date: !eval time.strftime('%Y-%m-%d %H:%M:%S')
|
|
hours: 10.0
|
|
name: Training on OpenERP xml views
|
|
user_id: base.user_root
|
|
-
|
|
I check for effective hours and remaining hours, effective_hours must be equal to 20.
|
|
-
|
|
!assert {model: project.task, id: project_task_technicaltraining0, severity: error, string: After one more work task of 10 hours effective_hours must be equal to 20}:
|
|
- remaining_hours == 10
|
|
- effective_hours == 20.0
|
|
-
|
|
I create a work task entry 'Training on workflows' of 10 hours.
|
|
-
|
|
!record {model: project.task, id: project_task_technicaltraining0, context:{'no_analytic_entry':True}}:
|
|
work_ids:
|
|
- date: !eval time.strftime('%Y-%m-%d %H:%M:%S')
|
|
hours: 10.0
|
|
name: Training on workflows
|
|
user_id: base.user_root
|
|
-
|
|
I check for effective hours and remaining hours, effective_hours must be equal to 30.
|
|
-
|
|
!assert {model: project.task, id: project_task_technicaltraining0, severity: error, string: After one more work task of 10 hours effective_hours must be equal to 30}:
|
|
- remaining_hours == 0
|
|
- effective_hours == 30.0
|
|
|
|
-
|
|
I set remaining hours of 10 hours for reevaluating the task.
|
|
-
|
|
!record {model: project.task.reevaluate, id: config_compute_remaining_0}:
|
|
remaining_hours: 10.0
|
|
-
|
|
I reevaluate the task.
|
|
-
|
|
!python {model: project.task.reevaluate}: |
|
|
self.compute_hours(cr, uid, [ref("config_compute_remaining_0")], {"lang": "en_US",
|
|
"project_id": False, "tz": False, "active_model": "project.task", "search_default_project_id":
|
|
False, "search_default_user_id": 1, "search_default_current": 1, "active_ids":
|
|
[ref("project_task_technicaltraining0")], "active_id": ref("project_task_technicaltraining0"), })
|
|
|
|
-
|
|
I check for effective hours and remaining hours, remaining_hours must be 10 while planned_hours remains 30.
|
|
-
|
|
!assert {model: project.task, id: project_task_technicaltraining0, severity: error, string: After reevaluating the task with 10 hours remaining_hours must be 10 while planned_hours remains 30}:
|
|
- planned_hours == 30
|
|
- remaining_hours == 10.0
|
|
- effective_hours == 30.0
|
|
-
|
|
I create a work task entry 'Training on reports and wizards' of 10 hours.
|
|
-
|
|
!record {model: project.task, id: project_task_technicaltraining0, context:{'no_analytic_entry':True}}:
|
|
work_ids:
|
|
- date: !eval time.strftime('%Y-%m-%d %H:%M:%S')
|
|
hours: 10.0
|
|
name: Training on reports and wizards
|
|
user_id: base.user_root
|
|
-
|
|
I check for effective hours and remaining hours.
|
|
-
|
|
!assert {model: project.task, id: project_task_technicaltraining0, severity: error, string: After one more work task of 10 hours effective_hours must be equal to 40 while planned_hours remains 30}:
|
|
- planned_hours == 30
|
|
- remaining_hours == 0
|
|
- effective_hours == 40.0
|
|
-
|
|
I close the task.
|
|
-
|
|
!python {model: project.task}: |
|
|
self.do_close(cr, uid, [ref("project_task_technicaltraining0")], {'mail_send': False})
|
|
-
|
|
I check if task in done state.
|
|
-
|
|
!assert {model: project.task, id: project_task_technicaltraining0, severity: error, string: Task is in done state}:
|
|
- state == "done"
|
|
-
|
|
I test for task reactivation.
|
|
-
|
|
I reactivate task.
|
|
-
|
|
!record {model: project.task.reevaluate, id: config_compute_remaining_1}:
|
|
remaining_hours: 10.0
|
|
-
|
|
Reevaluate the task with 10 hours remaining.
|
|
-
|
|
!python {model: project.task.reevaluate}: |
|
|
self.compute_hours(cr, uid, [ref("config_compute_remaining_1")], {"lang": "en_US",
|
|
"project_id": False, "tz": False, "button_reactivate": True, "active_model":
|
|
"project.task", "search_default_project_id": False, "search_default_user_id":
|
|
1, "search_default_current": 1, "active_ids": [ref("project_task_technicaltraining0")], "active_id": ref("project_task_technicaltraining0"),
|
|
})
|
|
-
|
|
I check for effective hours and remaining hours, remaining_hours must be 10 while planned_hours remains 30.
|
|
-
|
|
!assert {model: project.task, id: project_task_technicaltraining0, severity: error, string: After reevaluating the task with 10 hours remaining_hours must be 10 while planned_hours remains 30}:
|
|
- planned_hours == 30
|
|
- remaining_hours == 10.0
|
|
- effective_hours == 40.0
|
|
-
|
|
I create a work task entry 'Training on yml' of 5 hours.
|
|
-
|
|
!record {model: project.task, id: project_task_technicaltraining0, context:{'no_analytic_entry':True}}:
|
|
work_ids:
|
|
- date: !eval time.strftime('%Y-%m-%d %H:%M:%S')
|
|
hours: 5.0
|
|
name: Training on yml
|
|
user_id: base.user_root
|
|
-
|
|
I check for effective hours and remaining hours, remaining_hours must be 5, effective_hours must be 45.
|
|
-
|
|
!assert {model: project.task, id: project_task_technicaltraining0, severity: error, string: After work task of 5 hours effective_hours must be equal to 45 and remaining_hours is 5}:
|
|
- planned_hours == 30
|
|
- remaining_hours == 5.0
|
|
- effective_hours == 45.0
|
|
-
|
|
Check for remaining hours.
|
|
-
|
|
!python {model: project.task}: |
|
|
self.onchange_remaining(cr, uid, [ref("project_task_functionaltraining0")], remaining = 10.0, planned = False)
|
|
-
|
|
I close the task.
|
|
-
|
|
!python {model: project.task}: |
|
|
self.do_close(cr, uid, [ref("project_task_technicaltraining0")], {'mail_send': False})
|
|
-
|
|
I check if task in done state.
|
|
-
|
|
!assert {model: project.task, id: project_task_technicaltraining0, severity: error}:
|
|
- state == "done"
|
|
-
|
|
I check for effective hours and remaining hours.
|
|
-
|
|
!assert {model: project.task, id: project_task_technicaltraining0, severity: error, string: After closing the task planned_hours must remain 30 effective_hours must be 45 and remaining hours must be 0}:
|
|
- planned_hours == 30
|
|
- remaining_hours == 0.0
|
|
- effective_hours == 45.0
|
|
-
|
|
Now, Execute the search method.
|
|
-
|
|
!python {model: project.project}: |
|
|
context.update({"lang": "en_US", "active_ids": [ref("project.menu_open_view_project_all")],
|
|
"tz": False, "active_model": "ir.ui.menu", "project_id": False, "active_id":
|
|
ref("project.menu_open_view_project_all")})
|
|
user = ref('base.user_demo')
|
|
try:
|
|
self.search(cr, user, args={}, offset=0, limit=None, order=None, context=None, count=False)
|
|
except:
|
|
pass
|
|
-
|
|
I copy project 'OpenERP Training Programme'.
|
|
-
|
|
!python {model: project.project}: |
|
|
self.copy(cr, uid, ref("project_project_testprogramme0"), default={}, context=None)
|
|
-
|
|
I close project 'OpenERP Training Programme'.
|
|
-
|
|
!python {model: project.project}: |
|
|
context.update({"lang": "en_US", "active_ids": [ref("project.menu_open_view_project_all")],
|
|
"tz": False, "active_model": "ir.ui.menu", "project_id": False, "active_id":
|
|
ref("project.menu_open_view_project_all")})
|
|
user = ref('base.user_demo')
|
|
args={}
|
|
offset=0
|
|
limit=None
|
|
order=None
|
|
count=False
|
|
try:
|
|
self.search(cr, user, args, offset, limit, order, context, count)
|
|
except:
|
|
pass
|
|
self.set_done(cr, uid, [ref("project_project_openerptrainingprogramme0")], context=context)
|
|
|
|
-
|
|
I check if project in close state.
|
|
-
|
|
!assert {model: project.project, id: project_project_openerptrainingprogramme0, severity: error, string: "Project must be in closed state"}:
|
|
- state == "close"
|
|
-
|
|
Now, unlink the task's work.
|
|
-
|
|
!python {model: project.task.work}: |
|
|
self.unlink(cr, uid, [ref('project_task_work0')])
|
|
-
|
|
After remove project task's work unlink it's details from the analytic account.
|
|
-
|
|
!python {model: account.analytic.account}: |
|
|
vals = {
|
|
'name' : 'account_analytic_account',
|
|
'partner_id': ref('base.res_partner_asus')
|
|
}
|
|
self.create(cr, uid, vals, context=None)
|
|
self.unlink(cr, uid, [ref('account_analytic_account0')])
|
|
|
|
-
|
|
I check for remaining hours.
|
|
-
|
|
!python {model: project.task}: |
|
|
self.onchange_remaining(cr, uid, [ref("project_task_functionaltraining0")], remaining = 0.0, planned = 0.0)
|
|
-
|
|
I change the planned.
|
|
-
|
|
!python {model: project.task}: |
|
|
self.onchange_planned(cr, uid, [ref("project_task_functionaltraining0")], planned = 0.0, effective = 0.0)
|
|
-
|
|
I cancel this project.
|
|
-
|
|
!python {model: project.task}: |
|
|
self.do_cancel(cr, uid,[ref("project_task_functionaltraining0")],context={})
|
|
self.action_close(cr, uid, [ref("project_task_functionaltraining0")], context=None)
|
|
-
|
|
Now, unlink this project's task.
|
|
-
|
|
!python {model: project.task}: |
|
|
self.unlink(cr, uid,[ref("project_task_functionaltraining0")])
|
|
-
|
|
Now, unlink the project.
|
|
-
|
|
!python {model: project.project}: |
|
|
self.unlink(cr, uid, [ref('project_project_testprogramme0')])
|