Files
tradon/modules/project/tests/scenario_project_status.rst
2026-03-14 09:42:12 +00:00

88 lines
2.0 KiB
ReStructuredText

=======================
Project Status Scenario
=======================
Imports::
>>> from proteus import Model
>>> from trytond.modules.company.tests.tools import create_company
>>> from trytond.tests.tools import activate_modules, assertEqual
Activate project::
>>> config = activate_modules('project', create_company)
Create status::
>>> WorkStatus = Model.get('project.work.status')
>>> in_progress = WorkStatus(name="In-Progress", types=['project'])
>>> in_progress.progress = 0.1
>>> in_progress.save()
>>> open, = WorkStatus.find([('name', '=', "Open")])
>>> done, = WorkStatus.find([('name', '=', "Done")])
Create a project with a task::
>>> Work = Model.get('project.work')
>>> project = Work(type='project', name="Project")
>>> assertEqual(project.status, open)
>>> task = project.children.new(name="Task")
>>> assertEqual(task.status, open)
>>> project.save()
>>> task, = project.children
Open the project::
>>> project.status = in_progress
>>> project.progress
0.1
>>> project.save()
Try to complete project without task::
>>> project.status = done
>>> project.progress
1.0
>>> project.save()
Traceback (most recent call last):
...
WorkProgressValidationError: ...
>>> task, = project.children
>>> task.progress = 1
>>> project.save()
Try to reopen task without project::
>>> task = Work(task.id)
>>> task.progress = 0.5
>>> task.save()
Traceback (most recent call last):
...
WorkProgressValidationError: ...
Change progress with updating status::
>>> project.progress = 0.8
>>> project.save()
Traceback (most recent call last):
...
WorkProgressValidationError: ...
>>> project.status = in_progress
>>> project.save()
Reopen task::
>>> task = Work(task.id)
>>> task.progress = 0.5
>>> task.save()
Copy the project::
>>> project_copy, = project.duplicate()
>>> assertEqual(project_copy.status, open)
>>> project_copy.progress