From 859991dda7922151644719416f83eb8475e7665a Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Mon, 27 Feb 2012 09:51:28 +0100 Subject: [PATCH] [ADD] nonliterals in dataset tests bzr revid: xmo@openerp.com-20120227085128-6ymxpa93pr59vjmb --- addons/web/static/src/js/test_support.js | 21 +++++++++-- addons/web/static/test/fulltest/dataset.js | 41 ++++++++++++++++++++-- addons/web/test_support/controllers.py | 14 +++++++- 3 files changed, 70 insertions(+), 6 deletions(-) diff --git a/addons/web/static/src/js/test_support.js b/addons/web/static/src/js/test_support.js index 5fcfb94c6a2..d46366326b7 100644 --- a/addons/web/static/src/js/test_support.js +++ b/addons/web/static/src/js/test_support.js @@ -24,15 +24,26 @@ openerp.test_support = { }); return connection.session_reload(); }, - module: function (title, tested_core, fn) { + module: function (title, tested_core, nonliterals) { var conf = QUnit.config.openerp = {}; QUnit.module(title, { setup: function () { QUnit.stop(); var oe = conf.openerp = window.openerp.init(); window.openerp.web[tested_core](oe); - openerp.test_support.setup_connection(oe.connection) - .always(QUnit.start) + var done = openerp.test_support.setup_connection(oe.connection); + if (nonliterals) { + done = done.pipe(function () { + return oe.connection.rpc('/tests/add_nonliterals', { + domains: nonliterals.domains || [], + contexts: nonliterals.contexts || [] + }).then(function (r) { + oe.domains = r.domains; + oe.contexts = r.contexts; + }); + }); + } + done.always(QUnit.start) .then(function () { conf.openerp = oe; }, function (e) { @@ -57,6 +68,10 @@ openerp.test_support = { .fail(function (e) { if (e.code !== 200) { QUnit.equal(e.code, 200, 'Testing connector should raise RPC faults'); + if (typeof console !== 'undefined' && console.error) { + console.error(e.data.debug); + } + return; } fn(e.data.fault_code); }) diff --git a/addons/web/static/test/fulltest/dataset.js b/addons/web/static/test/fulltest/dataset.js index d42f1b363d3..14556e9f212 100644 --- a/addons/web/static/test/fulltest/dataset.js +++ b/addons/web/static/test/fulltest/dataset.js @@ -1,5 +1,8 @@ $(document).ready(function () { var t = window.openerp.test_support; + function context_(c) { + return _.extend({ lang: 'en_US', tz: 'UTC', uid: 87539319 }, c); + } t.module('Dataset shortcuts', 'data'); t.test('read_index', function (openerp) { @@ -14,6 +17,7 @@ $(document).ready(function () { strictEqual(result.args.length, 3); deepEqual(result.args[0], [30]); deepEqual(result.args[1], ['a', 'b', 'c']); + deepEqual(result.args[2], context_()); ok(_.isEmpty(result.kwargs)); }); @@ -27,8 +31,9 @@ $(document).ready(function () { strictEqual(result.args.length, 2); deepEqual(result.args[0], ['a', 'b', 'c']); - // FIXME: args[1] is context w/ user context, where to get? Hardcode? - strictEqual(result.args[1].foo, 'bar'); + console.log(result.args[1]); + console.log(context_({foo: 'bar'})); + deepEqual(result.args[1], context_({foo: 'bar'})); ok(_.isEmpty(result.kwargs)); }); @@ -40,6 +45,7 @@ $(document).ready(function () { strictEqual(r.args.length, 2); deepEqual(r.args[0], {foo: 1, bar: 2}); + deepEqual(r.args[1], context_()); ok(_.isEmpty(r.kwargs)); }); @@ -52,6 +58,7 @@ $(document).ready(function () { strictEqual(r.args.length, 3); deepEqual(r.args[0], [42]); deepEqual(r.args[1], {foo: 1}); + deepEqual(r.args[2], context_()); ok(_.isEmpty(r.kwargs)); }); @@ -68,6 +75,7 @@ $(document).ready(function () { strictEqual(r.args.length, 2); deepEqual(r.args[0], [42]); + deepEqual(r.args[1], context_()); ok(_.isEmpty(r.kwargs)); }); @@ -90,6 +98,7 @@ $(document).ready(function () { strictEqual(r.args.length, 2); deepEqual(r.args[0], [1, 2]); + deepEqual(r.args[1], context_()); ok(_.isEmpty(r.kwargs)); }); @@ -104,6 +113,7 @@ $(document).ready(function () { // domain deepEqual(r.args[1], []); strictEqual(r.args[2], 'ilike'); + deepEqual(r.args[3], context_()); strictEqual(r.args[4], 0); ok(_.isEmpty(r.kwargs)); @@ -119,6 +129,7 @@ $(document).ready(function () { // domain deepEqual(r.args[1], [['foo', '=', 3]]); strictEqual(r.args[2], 'someop'); + deepEqual(r.args[3], context_()); // limit strictEqual(r.args[4], 0); @@ -171,6 +182,32 @@ $(document).ready(function () { strictEqual(r.args[1], 0); strictEqual(r.args[2], false); strictEqual(r.args[3], 'bar ASC, foo DESC'); + deepEqual(r.args[4], context_()); + + ok(_.isEmpty(r.kwargs)); + }); + }); + + t.module('Nonliterals', 'data', { + domains: ['mary had a little lamb', 'bob the builder'], + contexts: ['{a: b > c}'] + }); + t.test('Dataset', function (openerp) { + var ds = new openerp.web.DataSetSearch( + {session: openerp.connection}, 'mod'); + var c = new openerp.web.CompoundContext( + {a: 'foo', b: 3, c: 5}, openerp.contexts[0]); + t.expect(ds.read_slice(['foo', 'bar'], { + context: c + }), function (r) { + strictEqual(r.method, 'search'); + + deepEqual(r.args[4], context_({ + foo: false, + a: 'foo', + b: 3, + c: 5 + })); ok(_.isEmpty(r.kwargs)); }); diff --git a/addons/web/test_support/controllers.py b/addons/web/test_support/controllers.py index f8e3c7a0739..a3719070730 100644 --- a/addons/web/test_support/controllers.py +++ b/addons/web/test_support/controllers.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -from ..common.http import Controller, jsonrequest +from ..common import http, nonliterals from ..controllers.main import Session UID = 87539319 @@ -14,6 +14,18 @@ def bind(session): session.context = CONTEXT session.build_connection().set_login_info(DB, LOGIN, PASSWORD, UID) +class TestController(http.Controller): + _cp_path = '/tests' + + @http.jsonrequest + def add_nonliterals(self, req, domains, contexts): + return { + 'domains': [nonliterals.Domain(req.session, domain) + for domain in domains], + 'contexts': [nonliterals.Context(req.session, context) + for context in contexts] + } + class TestSession(Session): _cp_path = '/web/session'