parent
f619e3b242
commit
ad9d0f8c7f
@ -99,12 +99,22 @@ describe("Class", function () {
|
||||
});
|
||||
|
||||
var a = new KlassWithOptions2();
|
||||
expect(a.options.foo1).to.eql(1);
|
||||
expect(a.options.foo2).to.eql(3);
|
||||
expect(a.options.foo3).to.eql(4);
|
||||
});
|
||||
|
||||
expect(a.options).to.eql({
|
||||
foo1: 1,
|
||||
foo2: 3,
|
||||
foo3: 4
|
||||
});
|
||||
it("gives new classes a distinct options object", function () {
|
||||
var K1 = L.Class.extend({options: {}});
|
||||
var K2 = K1.extend({});
|
||||
expect(K2.prototype.options).not.to.equal(K1.prototype.options);
|
||||
});
|
||||
|
||||
it("inherits options prototypally", function () {
|
||||
var K1 = L.Class.extend({options: {}});
|
||||
var K2 = K1.extend({options: {}});
|
||||
K1.prototype.options.foo = 'bar';
|
||||
expect(K2.prototype.options.foo).to.eql('bar');
|
||||
});
|
||||
|
||||
it("adds constructor hooks correctly", function () {
|
||||
|
@ -185,7 +185,47 @@ describe('Util', function () {
|
||||
});
|
||||
});
|
||||
|
||||
// TODO setOptions
|
||||
describe('#setOptions', function () {
|
||||
it('sets specified options on object', function () {
|
||||
var o = {};
|
||||
L.Util.setOptions(o, {foo: 'bar'});
|
||||
expect(o.options.foo).to.eql('bar');
|
||||
});
|
||||
|
||||
it('returns options', function () {
|
||||
var o = {};
|
||||
var r = L.Util.setOptions(o, {foo: 'bar'});
|
||||
expect(r).to.equal(o.options);
|
||||
});
|
||||
|
||||
it('accepts undefined', function () {
|
||||
var o = {};
|
||||
L.Util.setOptions(o, undefined);
|
||||
expect(o.options).to.eql({});
|
||||
});
|
||||
|
||||
it('creates a distinct options object', function () {
|
||||
var opts = {},
|
||||
o = L.Util.create({options: opts});
|
||||
L.Util.setOptions(o, {});
|
||||
expect(o.options).not.to.equal(opts);
|
||||
});
|
||||
|
||||
it("doesn't create a distinct options object if object already has own options", function () {
|
||||
var opts = {},
|
||||
o = {options: opts};
|
||||
L.Util.setOptions(o, {});
|
||||
expect(o.options).to.equal(opts);
|
||||
});
|
||||
|
||||
it('inherits options prototypally', function () {
|
||||
var opts = {},
|
||||
o = L.Util.create({options: opts});
|
||||
L.Util.setOptions(o, {});
|
||||
opts.foo = 'bar';
|
||||
expect(o.options.foo).to.eql('bar');
|
||||
});
|
||||
});
|
||||
|
||||
describe('#template', function () {
|
||||
it('evaluates templates with a given data object', function () {
|
||||
|
@ -50,8 +50,8 @@ L.Class.extend = function (props) {
|
||||
}
|
||||
|
||||
// merge options
|
||||
if (props.options && proto.options) {
|
||||
props.options = L.extend({}, proto.options, props.options);
|
||||
if (proto.options) {
|
||||
props.options = L.Util.extend(L.Util.create(proto.options), props.options);
|
||||
}
|
||||
|
||||
// mix given properties into the prototype
|
||||
|
@ -18,6 +18,14 @@ L.Util = {
|
||||
return dest;
|
||||
},
|
||||
|
||||
create: Object.create || (function () {
|
||||
function F() {}
|
||||
return function (proto) {
|
||||
F.prototype = proto;
|
||||
return new F();
|
||||
};
|
||||
})(),
|
||||
|
||||
bind: function (fn, obj) {
|
||||
var slice = Array.prototype.slice;
|
||||
|
||||
@ -107,8 +115,10 @@ L.Util = {
|
||||
},
|
||||
|
||||
setOptions: function (obj, options) {
|
||||
obj.options = options ? L.extend({}, obj.options, options) : obj.options || {};
|
||||
return obj.options;
|
||||
if (!obj.hasOwnProperty('options')) {
|
||||
obj.options = obj.options ? L.Util.create(obj.options) : {};
|
||||
}
|
||||
return L.extend(obj.options, options);
|
||||
},
|
||||
|
||||
getParamString: function (obj, existingUrl, uppercase) {
|
||||
|
Loading…
Reference in New Issue
Block a user