[IMP] base_action_rule: add test on creating two records related by a one2many

This commit is contained in:
Raphael Collet
2015-11-27 14:55:49 +01:00
parent 328f2afc6b
commit 88005eaf43
4 changed files with 36 additions and 1 deletions
@@ -43,5 +43,12 @@
<field name="act_user_id" ref="base.user_demo"/>
<field name="filter_domain">[('customer', '=', True)]</field>
</record>
<record id="test_rule_on_line" model="base.action.rule">
<field name="name">Test rule on secondary record</field>
<field name="kind">on_create</field>
<field name="model_id" ref="base_action_rule.model_base_action_rule_line_test"/>
<field name="act_user_id" ref="base.user_demo"/>
</record>
</data>
</openerp>
@@ -2,3 +2,4 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_base_action_rule,base.action.rule,model_base_action_rule,,1,0,0,0
access_base_action_rule_config,base.action.rule config,model_base_action_rule,base.group_system,1,1,1,1
access_base_action_rule_lead_test,access_base_action_rule_lead_test,model_base_action_rule_lead_test,base.group_system,1,1,1,1
access_base_action_rule_line_test,access_base_action_rule_line_test,model_base_action_rule_line_test,base.group_system,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_base_action_rule base.action.rule model_base_action_rule 1 0 0 0
3 access_base_action_rule_config base.action.rule config model_base_action_rule base.group_system 1 1 1 1
4 access_base_action_rule_lead_test access_base_action_rule_lead_test model_base_action_rule_lead_test base.group_system 1 1 1 1
5 access_base_action_rule_line_test access_base_action_rule_line_test model_base_action_rule_line_test base.group_system 1 1 1 1
+10
View File
@@ -24,6 +24,7 @@ class lead_test(osv.Model):
'active': fields.boolean('Active', required=False),
'partner_id': fields.many2one('res.partner', 'Partner', ondelete='set null'),
'date_action_last': fields.datetime('Last Action', readonly=1),
'line_ids': fields.one2many('base.action.rule.line.test', 'lead_id'),
}
_defaults = {
@@ -39,3 +40,12 @@ class lead_test(osv.Model):
def message_subscribe(self, cr, uid, ids, partner_ids=None, channel_ids=None, subtype_ids=None, force=True, context=None):
pass
class line_test(osv.Model):
_name = "base.action.rule.line.test"
_description = "Action Rule Line Test"
name = openerp.fields.Char()
lead_id = openerp.fields.Many2one('base.action.rule.lead.test', ondelete='cascade')
user_id = openerp.fields.Many2one('res.users')
@@ -77,7 +77,7 @@ class base_action_rule_test(common.TransactionCase):
self.assertEqual(lead.state, 'done')
self.assertEqual(lead.user_id, self.user_demo)
def test_04_recomputed_field(self):
def test_10_recomputed_field(self):
"""
Check that a rule is executed whenever a field is recomputed after a
change on another model.
@@ -91,3 +91,20 @@ class base_action_rule_test(common.TransactionCase):
partner.write({'customer': True})
self.assertTrue(lead.customer)
self.assertEqual(lead.user_id, self.user_demo)
def test_20_direct_line(self):
"""
Check that a rule is executed after creating a line record.
"""
line = self.env['base.action.rule.line.test'].create({'name': "Line"})
self.assertEqual(line.user_id, self.user_demo)
def test_20_indirect_line(self):
"""
Check that creating a lead with a line executes rules on both records.
"""
lead = self.create_lead(line_ids=[(0, 0, {'name': "Line"})])
self.assertEqual(lead.state, 'draft')
self.assertEqual(lead.user_id, self.user_demo)
self.assertEqual(len(lead.line_ids), 1)
self.assertEqual(lead.line_ids.user_id, self.user_demo)