diff --git a/bin/addons/base/__openerp__.py b/bin/addons/base/__openerp__.py index b68e2e909da..90468e24ee4 100644 --- a/bin/addons/base/__openerp__.py +++ b/bin/addons/base/__openerp__.py @@ -93,6 +93,7 @@ 'test/test_context.xml', 'test/bug_lp541545.xml', 'test/test_osv_expression.yml', + 'test/test_ir_rule.yml', ], 'installable': True, 'active': True, diff --git a/bin/addons/base/test/test_ir_rule.yml b/bin/addons/base/test/test_ir_rule.yml new file mode 100644 index 00000000000..fe30845fbac --- /dev/null +++ b/bin/addons/base/test/test_ir_rule.yml @@ -0,0 +1,135 @@ +- + Exercise ir_rule.py code (and indirectly expression.py). +- + Create an ir_rule for the Employee group (called base.group_user) + with an blank domain. +- + !record {model: ir.rule, id: test_rule}: + model_id: base.model_res_partner + domain_force: False + name: test_rule + groups: + - base.group_user + perm_unlink: 1 + perm_write: 1 + perm_read: 1 + perm_create: 1 +- + Read as demo user the partners (one blank domain). +- + !python {model: res.partner }: | + ids = self.search(cr, ref('base.user_demo'), []) + assert ids, "Demo user should see some partner." +- + Domain is not empty. +- + !record {model: ir.rule, id: test_rule}: + model_id: base.model_res_partner + domain_force: "[(1,'=',1)]" +- + Read as demo user the partners (one 1=1 domain). +- + !python {model: res.partner }: | + ids = self.search(cr, ref('base.user_demo'), []) + assert ids, "Demo user should see some partner." +- + Domain is an empty list. +- + !record {model: ir.rule, id: test_rule}: + model_id: base.model_res_partner + domain_force: "[]" +- + Read as demo user the partners (one [] domain). +- + !python {model: res.partner }: | + ids = self.search(cr, ref('base.user_demo'), []) + assert ids, "Demo user should see some partner." +- + Create another ir_rule for the Employee group (to test rules from + multiple groups). +- + !record {model: ir.rule, id: test_rule2}: + model_id: base.model_res_partner + domain_force: False + name: test_rule2 + groups: + - base.group_user + perm_unlink: 1 + perm_write: 1 + perm_read: 1 + perm_create: 1 +- + Read as demo user the partners (blank and [] domains). +- + !python {model: res.partner }: | + ids = self.search(cr, ref('base.user_demo'), []) + assert ids, "Demo user should see some partner." +- + Domain is not empty. +- + !record {model: ir.rule, id: test_rule}: + model_id: base.model_res_partner + domain_force: "[(1,'=',1)]" +- + Read as demo user the partners (1=1 and blank domain). +- + !python {model: res.partner }: | + ids = self.search(cr, ref('base.user_demo'), []) + assert ids, "Demo user should see some partner." +- + Domain is not empty. +- + !record {model: ir.rule, id: test_rule2}: + model_id: base.model_res_partner + domain_force: "[(1,'=',1)]" +- + Read as demo user the partners (two 1=1 domains). +- + !python {model: res.partner }: | + ids = self.search(cr, ref('base.user_demo'), []) + assert ids, "Demo user should see some partner." +- + Create another ir_rule for the Employee group (to test rules from + multiple groups). +- + !record {model: ir.rule, id: test_rule3}: + model_id: base.model_res_partner + domain_force: False + name: test_rule3 + groups: + - base.group_user + perm_unlink: 1 + perm_write: 1 + perm_read: 1 + perm_create: 1 +- + Read as demo user the partners. +- + !python {model: res.partner }: | + ids = self.search(cr, ref('base.user_demo'), []) + assert ids, "Demo user should see some partner." +- + Domain is not empty. +- + !record {model: ir.rule, id: test_rule3}: + model_id: base.model_res_partner + domain_force: "[(1,'=',1)]" +- + Read as demo user the partners (three 1=1 domains). +- + !python {model: res.partner }: | + ids = self.search(cr, ref('base.user_demo'), []) + assert ids, "Demo user should see some partner." +- + Delete global domains (to combine only group domains). +- + !python {model: ir.rule}: | + ids = self.search(cr, uid, [('groups','=',False)]) + assert ids, "Demo user should see some partner." + self.unlink(cr, uid, ids) +- + Read as demo user the partners (three 1=1 domains, no global domain). +- + !python {model: res.partner }: | + ids = self.search(cr, ref('base.user_demo'), []) + assert ids, "Demo user should see some partner."