2 I put sprint in pending state to allocate task to resources.
4 !python {model: project.scrum.sprint}: |
5 self.button_pending(cr, uid, [ref("scrum_sprint_0")])
7 I check state of sprint after put in pending.
9 !assert {model: project.scrum.sprint, id: scrum_sprint_0, severity: error, string: Sprint should be in pending state}:
12 I assign Backlog into this Sprint
14 !python {model: project.scrum.backlog.assign.sprint}: |
15 new_id = self.create(cr, uid, {'sprint_id': ref("scrum_sprint_0")})
16 self.assign_sprint(cr, uid, [new_id], {"active_ids": [ref("scrum_product_backlog_0")]
18 backlog_obj = self.pool.get('project.scrum.product.backlog')
19 task_obj = self.pool.get('project.task')
21 backlog_data = backlog_obj.browse(cr, uid, ref("scrum_product_backlog_0"), context)
22 assert backlog_data.sprint_id.id == ref("scrum_sprint_0"), 'Sprint is not assigned'
24 I Open sprint of "Week 31"
26 !python {model: project.scrum.sprint}: |
27 self.button_open(cr, uid, [ref("scrum_sprint_0")])
29 I check state of sprint after opened.
31 !assert {model: project.scrum.sprint, id: scrum_sprint_0, severity: error, string: Sprint should be in Open state}:
34 I create tasks from backlog "Automatic migration system" for sprint
36 !python {model: project.scrum.backlog.create.task}: |
37 new_id = self.create(cr, uid, {'user_id': ref("base.user_al")})
38 task_obj = self.pool.get('project.task')
39 backlog_obj = self.pool.get('project.scrum.product.backlog')
41 new_task = self.do_create(cr, uid, [new_id], {"active_ids": [ref("scrum_product_backlog_0")]})
42 backlog_data = backlog_obj.browse(cr, uid, ref("scrum_product_backlog_0"), context)
43 task_ids = task_obj.search(cr, uid, [('product_backlog_id','=', backlog_data.id)])
44 assert len(task_ids), "Task not created"
45 task = task_obj.browse(cr, uid, task_ids[0], context)
47 assert task.name == backlog_data.name and task.total_hours == backlog_data.expected_hours and task.user_id and task.user_id.id == ref("base.user_al"), 'Task not has been created'
49 I send email to scrum master with scrum meeting details.
51 !python {model: mail.compose.message }: |
53 ctx.update({'active_model': 'project.scrum.meeting', 'active_id': ref("scrum_meeting_0"), 'active_ids': [ref("scrum_meeting_0")]})
54 vals = self.default_get(cr, uid , [], context=ctx)
56 new_id = self.create(cr, uid, {'email_from': 'test@openerp.com', 'email_to': 'xyz@mycompany.com', 'subject': 'test'})
57 self.send_mail(cr, uid, [new_id], context=ctx)
61 I close sprint after review
63 !python {model: project.scrum.sprint}: |
64 self.button_close(cr, uid, [ref("scrum_sprint_0")])
66 I check state after closed sprint.
68 !assert {model: project.scrum.sprint, id: scrum_sprint_0, severity: error, string: Sprint shoud be in close state}:
71 I print Burndown chart of Sprint.
73 !python {model: project.scrum.sprint}: |
74 import netsvc, tools, os
75 data_dict = {'model': 'project.scrum.sprint', 'id':ref('scrum_sprint_0')}
76 (data, format) = netsvc.LocalService('report.scrum.sprint.burndown').create(cr, uid, [ref('scrum_sprint_0')], data_dict, {})
77 if tools.config['test_report_directory']:
78 file(os.path.join(tools.config['test_report_directory'], 'project_scrum-project_scrum_sprint_burndown.'+format), 'wb+').write(data)