diff --git a/addons/web/static/test/onchange.js b/addons/web/static/test/onchange.js new file mode 100644 index 00000000000..07eb6c1bc2c --- /dev/null +++ b/addons/web/static/test/onchange.js @@ -0,0 +1,58 @@ +$(document).ready(function () { + var openerp, + make_form = function (default_values) { + var fields = {}; + _(default_values).each(function (value, name) { + fields[name] = value instanceof Function ? value : { + get_on_change_value: function () { return value; } + }; + }); + return _.extend(new openerp.web.FormView(null, {}), + {fields: fields}); + }; + module("form.onchange", { + setup: function () { + openerp = window.openerp.init(true); + window.openerp.web.core(openerp); + window.openerp.web.chrome(openerp); + // views loader stuff + window.openerp.web.data(openerp); + window.openerp.web.views(openerp); + window.openerp.web.list(openerp); + window.openerp.web.form(openerp); + } + }); +// test('Parse args-less onchange', function () { +// var f = new openerp.web.FormView(null, {}); +// var result = f.parse_on_change('on_change_foo()', {}); +// equal(result.method, 'on_change_foo'); +// deepEqual(result.args, []); +// }); + test('Parse 1-arg onchange', function () { + var f = make_form({foo: 3}); + var result = f.parse_on_change('on_change_foo(foo)', {}); + equal(result.method, 'on_change_foo'); + deepEqual(result.args, [3]); + }); + test('Parse 2-args onchange', function () { + var f = make_form({foo: 3, bar: 'qux'}); + var result = f.parse_on_change('on_change_foo(bar, foo)', {}); + equal(result.method, 'on_change_foo'); + deepEqual(result.args, ['qux', 3]); + }); + test('Literal null', function () { + var f = make_form(); + var result = f.parse_on_change('on_null(None)', {}); + deepEqual(result.args, [null]); + }); + test('Literal true', function () { + var f = make_form(); + var result = f.parse_on_change('on_null(True)', {}); + deepEqual(result.args, [true]); + }); + test('Literal false', function () { + var f = make_form(); + var result = f.parse_on_change('on_null(False)', {}); + deepEqual(result.args, [false]); + }); +}); diff --git a/addons/web/static/test/test.html b/addons/web/static/test/test.html index d182ce18707..9bbfff168fd 100644 --- a/addons/web/static/test/test.html +++ b/addons/web/static/test/test.html @@ -49,4 +49,5 @@ +