diff --git a/addons/web/static/src/js/openerpframework.js b/addons/web/static/src/js/openerpframework.js index c67d9a34f23..11bc6497e8a 100644 --- a/addons/web/static/src/js/openerpframework.js +++ b/addons/web/static/src/js/openerpframework.js @@ -766,6 +766,8 @@ openerp.web.qweb.default_dict = { 'JSON': JSON, }; +openerp.declare = declare; + return openerp; }; diff --git a/addons/web/static/test/Widget.js b/addons/web/static/test/Widget.js index 858044f8cb0..ce48fd529b2 100644 --- a/addons/web/static/test/Widget.js +++ b/addons/web/static/test/Widget.js @@ -1,8 +1,13 @@ -openerp.testing.section('Widget.proxy', { - dependencies: ['web.corelib'] +(function() { + +var ropenerp = window.openerp; + +var openerp = ropenerp.declare($, _, QWeb2); + +ropenerp.testing.section('Widget.proxy', { }, function (test) { - test('(String)', function (instance) { - var W = instance.web.Widget.extend({ + test('(String)', function () { + var W = openerp.web.Widget.extend({ exec: function () { this.executed = true; } @@ -12,8 +17,8 @@ openerp.testing.section('Widget.proxy', { fn(); ok(w.executed, 'should execute the named method in the right context'); }); - test('(String)(*args)', function (instance) { - var W = instance.web.Widget.extend({ + test('(String)(*args)', function () { + var W = openerp.web.Widget.extend({ exec: function (arg) { this.executed = arg; } @@ -24,10 +29,10 @@ openerp.testing.section('Widget.proxy', { ok(w.executed, "should execute the named method in the right context"); equal(w.executed, 42, "should be passed the proxy's arguments"); }); - test('(String), include', function (instance) { + test('(String), include', function () { // the proxy function should handle methods being changed on the class // and should always proxy "by name", to the most recent one - var W = instance.web.Widget.extend({ + var W = openerp.web.Widget.extend({ exec: function () { this.executed = 1; } @@ -42,26 +47,25 @@ openerp.testing.section('Widget.proxy', { equal(w.executed, 2, "should be lazily resolved"); }); - test('(Function)', function (instance) { - var w = new (instance.web.Widget.extend({ }))(); + test('(Function)', function () { + var w = new (openerp.web.Widget.extend({ }))(); var fn = w.proxy(function () { this.executed = true; }); fn(); ok(w.executed, "should set the function's context (like Function#bind)"); }); - test('(Function)(*args)', function (instance) { - var w = new (instance.web.Widget.extend({ }))(); + test('(Function)(*args)', function () { + var w = new (openerp.web.Widget.extend({ }))(); var fn = w.proxy(function (arg) { this.executed = arg; }); fn(42); equal(w.executed, 42, "should be passed the proxy's arguments"); }); }); -openerp.testing.section('Widget.renderElement', { - dependencies: ['web.corelib'], - setup: function (instance) { - instance.web.qweb = new QWeb2.Engine(); - instance.web.qweb.add_template( +ropenerp.testing.section('Widget.renderElement', { + setup: function () { + openerp.web.qweb = new QWeb2.Engine(); + openerp.web.qweb.add_template( '' + '' + '
    ' + @@ -78,8 +82,8 @@ openerp.testing.section('Widget.renderElement', { ''); } }, function (test) { - test('no template, default', function (instance) { - var w = new (instance.web.Widget.extend({ }))(); + test('no template, default', function () { + var w = new (openerp.web.Widget.extend({ }))(); var $original = w.$el; ok($original, "should initially have a root element"); @@ -93,16 +97,16 @@ openerp.testing.section('Widget.renderElement', { equal(w.el.attributes.length, 0, "should not have generated any attribute"); ok(_.isEmpty(w.$el.html(), "should not have generated any content")); }); - test('no template, custom tag', function (instance) { - var w = new (instance.web.Widget.extend({ + test('no template, custom tag', function () { + var w = new (openerp.web.Widget.extend({ tagName: 'ul' }))(); w.renderElement(); equal(w.el.nodeName, 'UL', "should have generated the custom element tag"); }); - test('no template, @id', function (instance) { - var w = new (instance.web.Widget.extend({ + test('no template, @id', function () { + var w = new (openerp.web.Widget.extend({ id: 'foo' }))(); w.renderElement(); @@ -111,8 +115,8 @@ openerp.testing.section('Widget.renderElement', { equal(w.$el.attr('id'), 'foo', "should have generated the id attribute"); equal(w.el.id, 'foo', "should also be available via property"); }); - test('no template, @className', function (instance) { - var w = new (instance.web.Widget.extend({ + test('no template, @className', function () { + var w = new (openerp.web.Widget.extend({ className: 'oe_some_class' }))(); w.renderElement(); @@ -120,8 +124,8 @@ openerp.testing.section('Widget.renderElement', { equal(w.el.className, 'oe_some_class', "should have the right property"); equal(w.$el.attr('class'), 'oe_some_class', "should have the right attribute"); }); - test('no template, bunch of attributes', function (instance) { - var w = new (instance.web.Widget.extend({ + test('no template, bunch of attributes', function () { + var w = new (openerp.web.Widget.extend({ attributes: { 'id': 'some_id', 'class': 'some_class', @@ -147,8 +151,8 @@ openerp.testing.section('Widget.renderElement', { equal(w.$el.attr('spoiler'), 'snape kills dumbledore'); }); - test('template', function (instance) { - var w = new (instance.web.Widget.extend({ + test('template', function () { + var w = new (openerp.web.Widget.extend({ template: 'test.widget.template' }))(); w.renderElement(); @@ -157,8 +161,8 @@ openerp.testing.section('Widget.renderElement', { equal(w.$el.children().length, 5); equal(w.el.textContent, '01234'); }); - test('repeated', { asserts: 4 }, function (instance, $fix) { - var w = new (instance.web.Widget.extend({ + test('repeated', { asserts: 4 }, function (_unused, $fix) { + var w = new (openerp.web.Widget.extend({ template: 'test.widget.template-value' }))(); w.value = 42; @@ -173,11 +177,10 @@ openerp.testing.section('Widget.renderElement', { }); }); }); -openerp.testing.section('Widget.$', { - dependencies: ['web.corelib'], - setup: function (instance) { - instance.web.qweb = new QWeb2.Engine(); - instance.web.qweb.add_template( +ropenerp.testing.section('Widget.$', { + setup: function () { + openerp.web.qweb = new QWeb2.Engine(); + openerp.web.qweb.add_template( '' + '' + '
      ' + @@ -191,8 +194,8 @@ openerp.testing.section('Widget.$', { ''); } }, function (test) { - test('basic-alias', function (instance) { - var w = new (instance.web.Widget.extend({ + test('basic-alias', function () { + var w = new (openerp.web.Widget.extend({ template: 'test.widget.template' }))(); w.renderElement(); @@ -201,11 +204,10 @@ openerp.testing.section('Widget.$', { "should do the same thing as calling find on the widget root"); }); }); -openerp.testing.section('Widget.events', { - dependencies: ['web.corelib'], - setup: function (instance) { - instance.web.qweb = new QWeb2.Engine(); - instance.web.qweb.add_template( +ropenerp.testing.section('Widget.events', { + setup: function () { + openerp.web.qweb = new QWeb2.Engine(); + openerp.web.qweb.add_template( '' + '' + '
        ' + @@ -219,9 +221,9 @@ openerp.testing.section('Widget.events', { ''); } }, function (test) { - test('delegate', function (instance) { + test('delegate', function () { var a = []; - var w = new (instance.web.Widget.extend({ + var w = new (openerp.web.Widget.extend({ template: 'test.widget.template', events: { 'click': function () { @@ -243,9 +245,9 @@ openerp.testing.section('Widget.events', { ok(a[i], "should pass test " + i); } }); - test('undelegate', function (instance) { + test('undelegate', function () { var clicked = false, newclicked = false; - var w = new (instance.web.Widget.extend({ + var w = new (openerp.web.Widget.extend({ template: 'test.widget.template', events: { 'click li': function () { clicked = true; } } }))(); @@ -263,3 +265,5 @@ openerp.testing.section('Widget.events', { ok(newclicked, "undelegate should only unbind events it created"); }); }); + +})();