[IMP] base_action_rule: add test on creating two records related by a one2many
This commit is contained in:
@@ -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
|
||||
|
||||
|
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user