diff --git a/addons/web/__openerp__.py b/addons/web/__openerp__.py index 7a00b4c5a47..08c6d0c6148 100644 --- a/addons/web/__openerp__.py +++ b/addons/web/__openerp__.py @@ -75,7 +75,7 @@ This module provides the core of the OpenERP Web Client. ], 'test': [ "static/test/testing.js", - "static/test/class.js", + "static/test/framework.js", "static/test/registry.js", "static/test/form.js", "static/test/data.js", @@ -84,7 +84,6 @@ This module provides the core of the OpenERP Web Client. "static/test/rpc.js", "static/test/evals.js", "static/test/search.js", - "static/test/Widget.js", "static/test/list.js", "static/test/list-editable.js", "static/test/mutex.js" diff --git a/addons/web/static/test/class.js b/addons/web/static/test/class.js deleted file mode 100644 index bb3fb7e12b9..00000000000 --- a/addons/web/static/test/class.js +++ /dev/null @@ -1,133 +0,0 @@ -openerp.testing.section('class', { - dependencies: ['web.corelib'] -}, function (test) { - test('Basic class creation', function (instance) { - var C = instance.web.Class.extend({ - foo: function () { - return this.somevar; - } - }); - var i = new C(); - i.somevar = 3; - - ok(i instanceof C); - strictEqual(i.foo(), 3); - }); - test('Class initialization', function (instance) { - var C1 = instance.web.Class.extend({ - init: function () { - this.foo = 3; - } - }); - var C2 = instance.web.Class.extend({ - init: function (arg) { - this.foo = arg; - } - }); - - var i1 = new C1(), - i2 = new C2(42); - - strictEqual(i1.foo, 3); - strictEqual(i2.foo, 42); - }); - test('Inheritance', function (instance) { - var C0 = instance.web.Class.extend({ - foo: function () { - return 1; - } - }); - var C1 = C0.extend({ - foo: function () { - return 1 + this._super(); - } - }); - var C2 = C1.extend({ - foo: function () { - return 1 + this._super(); - } - }); - - strictEqual(new C0().foo(), 1); - strictEqual(new C1().foo(), 2); - strictEqual(new C2().foo(), 3); - }); - test('In-place extension', function (instance) { - var C0 = instance.web.Class.extend({ - foo: function () { - return 3; - }, - qux: function () { - return 3; - }, - bar: 3 - }); - C0.include({ - foo: function () { - return 5; - }, - qux: function () { - return 2 + this._super(); - }, - bar: 5, - baz: 5 - }); - - strictEqual(new C0().bar, 5); - strictEqual(new C0().baz, 5); - strictEqual(new C0().foo(), 5); - strictEqual(new C0().qux(), 5); - }); - test('In-place extension and inheritance', function (instance) { - var C0 = instance.web.Class.extend({ - foo: function () { return 1; }, - bar: function () { return 1; } - }); - var C1 = C0.extend({ - foo: function () { return 1 + this._super(); } - }); - strictEqual(new C1().foo(), 2); - strictEqual(new C1().bar(), 1); - - C1.include({ - foo: function () { return 2 + this._super(); }, - bar: function () { return 1 + this._super(); } - }); - strictEqual(new C1().foo(), 4); - strictEqual(new C1().bar(), 2); - }); - test('In-place extensions alter existing instances', function (instance) { - var C0 = instance.web.Class.extend({ - foo: function () { return 1; }, - bar: function () { return 1; } - }); - var i = new C0(); - strictEqual(i.foo(), 1); - strictEqual(i.bar(), 1); - - C0.include({ - foo: function () { return 2; }, - bar: function () { return 2 + this._super(); } - }); - strictEqual(i.foo(), 2); - strictEqual(i.bar(), 3); - }); - test('In-place extension of subclassed types', function (instance) { - var C0 = instance.web.Class.extend({ - foo: function () { return 1; }, - bar: function () { return 1; } - }); - var C1 = C0.extend({ - foo: function () { return 1 + this._super(); }, - bar: function () { return 1 + this._super(); } - }); - var i = new C1(); - strictEqual(i.foo(), 2); - C0.include({ - foo: function () { return 2; }, - bar: function () { return 2 + this._super(); } - }); - strictEqual(i.foo(), 3); - strictEqual(i.bar(), 4); - }); -}); diff --git a/addons/web/static/test/Widget.js b/addons/web/static/test/framework.js similarity index 70% rename from addons/web/static/test/Widget.js rename to addons/web/static/test/framework.js index ce48fd529b2..5848c5cde7f 100644 --- a/addons/web/static/test/Widget.js +++ b/addons/web/static/test/framework.js @@ -4,6 +4,141 @@ var ropenerp = window.openerp; var openerp = ropenerp.declare($, _, QWeb2); +ropenerp.testing.section('class', { + dependencies: ['web.corelib'] +}, function (test) { + test('Basic class creation', function (instance) { + var C = instance.web.Class.extend({ + foo: function () { + return this.somevar; + } + }); + var i = new C(); + i.somevar = 3; + + ok(i instanceof C); + strictEqual(i.foo(), 3); + }); + test('Class initialization', function (instance) { + var C1 = instance.web.Class.extend({ + init: function () { + this.foo = 3; + } + }); + var C2 = instance.web.Class.extend({ + init: function (arg) { + this.foo = arg; + } + }); + + var i1 = new C1(), + i2 = new C2(42); + + strictEqual(i1.foo, 3); + strictEqual(i2.foo, 42); + }); + test('Inheritance', function (instance) { + var C0 = instance.web.Class.extend({ + foo: function () { + return 1; + } + }); + var C1 = C0.extend({ + foo: function () { + return 1 + this._super(); + } + }); + var C2 = C1.extend({ + foo: function () { + return 1 + this._super(); + } + }); + + strictEqual(new C0().foo(), 1); + strictEqual(new C1().foo(), 2); + strictEqual(new C2().foo(), 3); + }); + test('In-place extension', function (instance) { + var C0 = instance.web.Class.extend({ + foo: function () { + return 3; + }, + qux: function () { + return 3; + }, + bar: 3 + }); + C0.include({ + foo: function () { + return 5; + }, + qux: function () { + return 2 + this._super(); + }, + bar: 5, + baz: 5 + }); + + strictEqual(new C0().bar, 5); + strictEqual(new C0().baz, 5); + strictEqual(new C0().foo(), 5); + strictEqual(new C0().qux(), 5); + }); + test('In-place extension and inheritance', function (instance) { + var C0 = instance.web.Class.extend({ + foo: function () { return 1; }, + bar: function () { return 1; } + }); + var C1 = C0.extend({ + foo: function () { return 1 + this._super(); } + }); + strictEqual(new C1().foo(), 2); + strictEqual(new C1().bar(), 1); + + C1.include({ + foo: function () { return 2 + this._super(); }, + bar: function () { return 1 + this._super(); } + }); + strictEqual(new C1().foo(), 4); + strictEqual(new C1().bar(), 2); + }); + test('In-place extensions alter existing instances', function (instance) { + var C0 = instance.web.Class.extend({ + foo: function () { return 1; }, + bar: function () { return 1; } + }); + var i = new C0(); + strictEqual(i.foo(), 1); + strictEqual(i.bar(), 1); + + C0.include({ + foo: function () { return 2; }, + bar: function () { return 2 + this._super(); } + }); + strictEqual(i.foo(), 2); + strictEqual(i.bar(), 3); + }); + test('In-place extension of subclassed types', function (instance) { + var C0 = instance.web.Class.extend({ + foo: function () { return 1; }, + bar: function () { return 1; } + }); + var C1 = C0.extend({ + foo: function () { return 1 + this._super(); }, + bar: function () { return 1 + this._super(); } + }); + var i = new C1(); + strictEqual(i.foo(), 2); + C0.include({ + foo: function () { return 2; }, + bar: function () { return 2 + this._super(); } + }); + strictEqual(i.foo(), 3); + strictEqual(i.bar(), 4); + }); +}); + + ropenerp.testing.section('Widget.proxy', { }, function (test) { test('(String)', function () {