odoo/addons/web/static/lib/novajs/test/test.js

144 lines
3.3 KiB
JavaScript

module("Class");
test("base", function() {
ok(!!nova.Class, "Class does exist");
ok(!!nova.Class.extend, "extend does exist");
var Claz = nova.Class.extend({
test: function() {
return "ok";
}
});
equal(new Claz().test(), "ok");
var Claz2 = Claz.extend({
test: function() {
return this._super() + "2";
}
});
equal(new Claz2().test(), "ok2");
});
module("DestroyableMixin");
test("base", function() {
var Claz = nova.Class.extend(_.extend({}, nova.DestroyableMixin, {}));
var x = new Claz();
equal(!!x.isDestroyed(), false);
x.destroy();
equal(x.isDestroyed(), true);
});
module("ParentedMixin");
test("base", function() {
var Claz = nova.Class.extend(_.extend({}, nova.ParentedMixin, {}));
var x = new Claz();
var y = new Claz();
y.setParent(x);
equal(y.getParent(), x);
equal(x.getChildren()[0], y);
x.destroy();
equal(y.isDestroyed(), true);
});
module("Events");
test("base", function() {
var x = new nova.internal.Events();
var tmp = 0;
var fct = function() {tmp = 1;};
x.on("test", fct);
equal(tmp, 0);
x.trigger("test");
equal(tmp, 1);
tmp = 0;
x.off("test", fct);
x.trigger("test");
equal(tmp, 0);
});
module("EventDispatcherMixin");
test("base", function() {
var Claz = nova.Class.extend(_.extend({}, nova.EventDispatcherMixin, {}));
var x = new Claz();
var y = new Claz();
var tmp = 0;
var fct = function() {tmp = 1;};
x.on("test", y, fct);
equal(tmp, 0);
x.trigger("test");
equal(tmp, 1);
tmp = 0;
x.off("test", y, fct);
x.trigger("test");
equal(tmp, 0);
tmp = 0;
x.on("test", y, fct);
y.destroy();
x.trigger("test");
equal(tmp, 0);
});
module("GetterSetterMixin");
test("base", function() {
var Claz = nova.Class.extend(_.extend({}, nova.GetterSetterMixin, {}));
var x = new Claz();
var y = new Claz();
x.set({test: 1});
equal(x.get("test"), 1);
var tmp = 0;
x.on("change:test", y, function(model, options) {
tmp = 1;
equal(options.oldValue, 1);
equal(options.newValue, 2);
equal(x.get("test"), 2);
equal(model, x);
});
x.set({test: 2});
equal(tmp, 1);
});
test("change event only when changed", function() {
var Claz = nova.Class.extend(_.extend({}, nova.GetterSetterMixin, {}));
var x = new Claz();
var exec1 = false;
var exec2 = false;
x.on("change:test", null, function() {exec1 = true;});
x.on("change", null, function() {exec2 = true;});
x.set({"test": 3});
equal(exec1, true);
equal(exec2, true);
exec1 = false;
exec2 = false;
x.set({"test": 3});
equal(exec1, false);
equal(exec2, false);
});
module("Widget");
test("base", function() {
var Claz = nova.Widget.extend({
renderElement: function() {
this.$element.attr("id", "testdiv");
this.$element.html("test");
}
});
var x = new Claz();
x.appendTo($("body"));
var $el = $("#testdiv");
equal($el.length, 1);
equal($el.parents()[0], $("body")[0]);
equal($el.html(), "test");
var y = new Claz(x);
equal(y.getParent(), x);
x.destroy();
$el = $("#testdiv");
equal($el.length, 0);
});