+$(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]);
+ });
+});