diff --git a/addons/base/static/src/js/form.js b/addons/base/static/src/js/form.js index bf42fc4fd7f..9c8bf87902a 100644 --- a/addons/base/static/src/js/form.js +++ b/addons/base/static/src/js/form.js @@ -283,10 +283,10 @@ openerp.base.form.Widget = openerp.base.Controller.extend({ }, process_attrs: function() { for (var a in this.attrs) { - this[a] = this.eval_attrs(this.attrs[a]); + this[a] = this.compute_domain(this.attrs[a]); } }, - eval_attrs: function(expr) { + compute_domain: function(expr) { var stack = []; for (var i = 0; i < expr.length; i++) { var ex = expr[i]; diff --git a/addons/base/static/test/form.js b/addons/base/static/test/form.js new file mode 100644 index 00000000000..9d61bf6d60a --- /dev/null +++ b/addons/base/static/test/form.js @@ -0,0 +1,54 @@ +$(document).ready(function () { + var widget; + module("form.widget", { + setup: function () { + var openerp = window.openerp.init(true); + window.openerp.base.chrome(openerp); + // views loader stuff + window.openerp.base.data(openerp); + window.openerp.base.views(openerp); + window.openerp.base.form(openerp); + widget = new openerp.base.form.Widget({ + 'widgets': {}, + 'fields': {} + }, { + 'attrs': {} + }); + } + }); + test("compute_domain", function () { + widget.view.fields = { + 'a': {value: 3}, + 'group_method': {value: 'line'}, + 'select1': {value: 'day'}, + 'rrule_type': {value: 'monthly'} + }; + ok(widget.compute_domain([['a', '=', 3]])); + ok(widget.compute_domain([['group_method','!=','count']])); + ok(widget.compute_domain([['select1','=','day'], + ['rrule_type','=','monthly']])); + }); + test("compute_domain or", function () { + var base = { + 'section_id': {value: null}, + 'user_id': {value: null}, + 'member_ids': {value: null} + }; + + var domain = ['|', ['section_id', '=', 42], + '|', ['user_id','=',3], + ['member_ids', 'in', [3]]]; + + widget.view.fields = _.extend( + {}, base, {'section_id': {value: 42}}); + ok(widget.compute_domain(domain)); + + widget.view.fields = _.extend( + {}, base, {'user_id': {value: 3}}); + ok(widget.compute_domain(domain)); + + widget.view.fields = _.extend( + {}, base, {'member_ids': {value: 3}}); + ok(widget.compute_domain(domain)); + }); +}); diff --git a/addons/base/static/test/test.html b/addons/base/static/test/test.html index 776b03146ff..5fcf4f4c594 100644 --- a/addons/base/static/test/test.html +++ b/addons/base/static/test/test.html @@ -21,6 +21,7 @@ + +