144 lines
3.3 KiB
JavaScript
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);
|
|
});
|
|
|