[ADD] sanity tests for basic checking of onchange parsing
authorXavier Morel <xmo@openerp.com>
Mon, 21 Nov 2011 12:26:22 +0000 (13:26 +0100)
committerXavier Morel <xmo@openerp.com>
Mon, 21 Nov 2011 12:26:22 +0000 (13:26 +0100)
bzr revid: xmo@openerp.com-20111121122622-g6jzo74ctgc6r1hk

addons/web/static/test/onchange.js [new file with mode: 0644]
addons/web/static/test/test.html

diff --git a/addons/web/static/test/onchange.js b/addons/web/static/test/onchange.js
new file mode 100644 (file)
index 0000000..07eb6c1
--- /dev/null
@@ -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]);
+    });
+});
index d182ce1..9bbfff1 100644 (file)
@@ -49,4 +49,5 @@
     <script type="text/javascript" src="/web/static/test/form.js"></script>
     <script type="text/javascript" src="/web/static/test/list-utils.js"></script>
     <script type="text/javascript" src="/web/static/test/formats.js"></script>
+    <script type="text/javascript" src="/web/static/test/onchange.js"></script>
 </html>