summaryrefslogtreecommitdiff
path: root/odoo/addons/test_workflow/tests/test_workflow.py
diff options
context:
space:
mode:
authorRaphael Collet <rco@openerp.com>2016-09-02 15:58:39 +0200
committerRaphael Collet <rco@openerp.com>2016-09-02 17:28:12 +0200
commit9e64f9f9514194d74e166b032add8511182f2677 (patch)
tree5086710c04c6b923be18a6d1d97b3f0f3a2a9c4a /odoo/addons/test_workflow/tests/test_workflow.py
parent11812b0b9e82b2b1b9041d8250ce01e7b4a5f7ee (diff)
[REF] openerp: move `openerp` to `odoo`
Diffstat (limited to 'odoo/addons/test_workflow/tests/test_workflow.py')
-rw-r--r--odoo/addons/test_workflow/tests/test_workflow.py121
1 files changed, 121 insertions, 0 deletions
diff --git a/odoo/addons/test_workflow/tests/test_workflow.py b/odoo/addons/test_workflow/tests/test_workflow.py
new file mode 100644
index 00000000000..852aed7d1eb
--- /dev/null
+++ b/odoo/addons/test_workflow/tests/test_workflow.py
@@ -0,0 +1,121 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from odoo.tests import common
+
+
+class test_workflows(common.TransactionCase):
+
+ def check_activities(self, record, names):
+ """ Check that the record has workitems in the given activity names.
+ """
+ Instance = self.env['workflow.instance']
+ Workitem = self.env['workflow.workitem']
+
+ # Given the workflow instance associated to the record ...
+ instance = Instance.search([('res_type', '=', record._name), ('res_id', '=', record.id)])
+ self.assertTrue(instance, 'A workflow instance is expected.')
+
+ # ... get all its workitems ...
+ workitems = Workitem.search([('inst_id', '=', instance.id)])
+ self.assertTrue(workitems, 'The workflow instance should have workitems.')
+
+ # ... and check the activity the are in against the provided names.
+ self.assertEqual(
+ sorted([item.act_id.name for item in workitems]),
+ sorted(names))
+
+ def check_value(self, record, value):
+ """ Check that the record has the given value.
+ """
+ self.assertEqual(record.value, value)
+
+ def test_workflow(self):
+ model = self.env['test.workflow.model']
+ trigger = self.env['test.workflow.trigger']
+
+ record = model.create({})
+ self.check_activities(record, ['a'])
+
+ # a -> b is just a signal.
+ record.signal_workflow('a-b')
+ self.check_activities(record, ['b'])
+
+ # b -> c is a trigger (which is False),
+ # so we remain in the b activity.
+ record.trigger()
+ self.check_activities(record, ['b'])
+
+ # b -> c is a trigger (which is set to True).
+ # so we go in c when the trigger is called.
+ trigger.browse(1).write({'value': True})
+ record.trigger()
+ self.check_activities(record, ['c'])
+
+ self.assertEqual(True, True)
+
+ def test_workflow_a(self):
+ record = self.env['test.workflow.model.a'].create({})
+ self.check_activities(record, ['a'])
+ self.check_value(record, 0)
+
+ def test_workflow_b(self):
+ record = self.env['test.workflow.model.b'].create({})
+ self.check_activities(record, ['a'])
+ self.check_value(record, 1)
+
+ def test_workflow_c(self):
+ record = self.env['test.workflow.model.c'].create({})
+ self.check_activities(record, ['a'])
+ self.check_value(record, 0)
+
+ def test_workflow_d(self):
+ record = self.env['test.workflow.model.d'].create({})
+ self.check_activities(record, ['a'])
+ self.check_value(record, 1)
+
+ def test_workflow_e(self):
+ record = self.env['test.workflow.model.e'].create({})
+ self.check_activities(record, ['b'])
+ self.check_value(record, 2)
+
+ def test_workflow_f(self):
+ record = self.env['test.workflow.model.f'].create({})
+ self.check_activities(record, ['a'])
+ self.check_value(record, 1)
+
+ record.signal_workflow('a-b')
+ self.check_activities(record, ['b'])
+ self.check_value(record, 2)
+
+ def test_workflow_g(self):
+ record = self.env['test.workflow.model.g'].create({})
+ self.check_activities(record, ['a'])
+ self.check_value(record, 1)
+
+ def test_workflow_h(self):
+ record = self.env['test.workflow.model.h'].create({})
+ self.check_activities(record, ['b', 'c'])
+ self.check_value(record, 2)
+
+ def test_workflow_i(self):
+ record = self.env['test.workflow.model.i'].create({})
+ self.check_activities(record, ['b'])
+ self.check_value(record, 2)
+
+ def test_workflow_j(self):
+ record = self.env['test.workflow.model.j'].create({})
+ self.check_activities(record, ['a'])
+ self.check_value(record, 1)
+
+ def test_workflow_k(self):
+ record = self.env['test.workflow.model.k'].create({})
+ # Non-determinisitic: can be b or c
+ # self.check_activities(record, ['b'])
+ # self.check_activities(record, ['c'])
+ self.check_value(record, 2)
+
+ def test_workflow_l(self):
+ record = self.env['test.workflow.model.l'].create({})
+ self.check_activities(record, ['c', 'c', 'd'])
+ self.check_value(record, 3)