1
0
mirror of https://github.com/videojs/video.js.git synced 2025-01-27 11:22:06 +02:00

@heff fixed checking for child options in the parent options to allow for `false`. closes #1630

This commit is contained in:
Steve Heffernan 2014-10-30 13:18:18 -07:00
parent f420c5bd5f
commit 1325722447
3 changed files with 29 additions and 13 deletions

View File

@ -2,7 +2,7 @@ CHANGELOG
========= =========
## HEAD (Unreleased) ## HEAD (Unreleased)
_(none)_ * @heff fixed checking for child options in the parent options to allow for 'false'; ([view](https://github.com/videojs/video.js/pull/1630))
-------------------- --------------------

View File

@ -490,7 +490,7 @@ vjs.Component.prototype.initChildren = function(){
// Allow options for children to be set at the parent options // Allow options for children to be set at the parent options
// e.g. videojs(id, { controlBar: false }); // e.g. videojs(id, { controlBar: false });
// instead of videojs(id, { children: { controlBar: false }); // instead of videojs(id, { children: { controlBar: false });
if (parentOptions[name]) { if (parentOptions[name] !== undefined) {
opts = parentOptions[name]; opts = parentOptions[name];
} }

View File

@ -76,7 +76,7 @@ test('should do a deep merge of child options', function(){
var comp = new vjs.Component(getFakePlayer(), { var comp = new vjs.Component(getFakePlayer(), {
'example': { 'example': {
'childOne': { 'foo': 'baz', 'abc': '123' }, 'childOne': { 'foo': 'baz', 'abc': '123' },
'childThree': null, 'childThree': false,
'childFour': {} 'childFour': {}
} }
}); });
@ -88,7 +88,7 @@ test('should do a deep merge of child options', function(){
ok(children['childOne']['asdf'] === 'fdsa', 'value three levels deep maintained'); ok(children['childOne']['asdf'] === 'fdsa', 'value three levels deep maintained');
ok(children['childOne']['abc'] === '123', 'value three levels deep added'); ok(children['childOne']['abc'] === '123', 'value three levels deep added');
ok(children['childTwo'], 'object two levels deep maintained'); ok(children['childTwo'], 'object two levels deep maintained');
ok(children['childThree'] === null, 'object two levels deep removed'); ok(children['childThree'] === false, 'object two levels deep removed');
ok(children['childFour'], 'object two levels deep added'); ok(children['childFour'], 'object two levels deep added');
ok(vjs.Component.prototype.options_['example']['childOne']['foo'] === 'bar', 'prototype options were not overridden'); ok(vjs.Component.prototype.options_['example']['childOne']['foo'] === 'bar', 'prototype options were not overridden');
@ -98,32 +98,48 @@ test('should do a deep merge of child options', function(){
}); });
test('should allows setting child options at the parent options level', function(){ test('should allows setting child options at the parent options level', function(){
var parent; var parent, options;
parent = new vjs.Component(getFakePlayer(), { // using children array
options = {
'children': [ 'children': [
'component' 'component',
'nullComponent'
], ],
// parent-level option for child // parent-level option for child
'component': { 'component': {
'foo': true 'foo': true
} },
}); 'nullComponent': false
};
try {
parent = new vjs.Component(getFakePlayer(), options);
} catch(err) {
ok(false, 'Child with `false` option was initialized');
}
equal(parent.children()[0].options()['foo'], true, 'child options set when children array is used'); equal(parent.children()[0].options()['foo'], true, 'child options set when children array is used');
parent = new vjs.Component(getFakePlayer(), { // using children object
options = {
'children': { 'children': {
'component': { 'component': {
'foo': false 'foo': false
} },
'nullComponent': {}
}, },
// parent-level option for child // parent-level option for child
'component': { 'component': {
'foo': true 'foo': true
} },
}); 'nullComponent': false
};
try {
parent = new vjs.Component(getFakePlayer(), options);
} catch(err) {
ok(false, 'Child with `false` option was initialized');
}
equal(parent.children()[0].options()['foo'], true, 'child options set when children object is used'); equal(parent.children()[0].options()['foo'], true, 'child options set when children object is used');
}); });