123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252 |
- /* global wp */
- jQuery( function( $ ) {
- var FooSuperClass, BarSubClass, foo, bar, ConstructorTestClass, newConstructor, constructorTest, $mockElement, mockString,
- firstInitialValue, firstValueInstance, valuesInstance, wasCallbackFired, mockValueCallback;
- QUnit.module( 'Customize Base: Class' );
- FooSuperClass = wp.customize.Class.extend(
- {
- initialize: function( instanceProps ) {
- $.extend( this, instanceProps || {} );
- },
- protoProp: 'protoPropValue'
- },
- {
- staticProp: 'staticPropValue'
- }
- );
- QUnit.test( 'FooSuperClass is a function', function( assert ) {
- assert.equal( typeof FooSuperClass, 'function' );
- });
- QUnit.test( 'FooSuperClass prototype has protoProp', function( assert ) {
- assert.equal( FooSuperClass.prototype.protoProp, 'protoPropValue' );
- });
- QUnit.test( 'FooSuperClass does not have protoProp', function( assert ) {
- assert.equal( typeof FooSuperClass.protoProp, 'undefined' );
- });
- QUnit.test( 'FooSuperClass has staticProp', function( assert ) {
- assert.equal( FooSuperClass.staticProp, 'staticPropValue' );
- });
- QUnit.test( 'FooSuperClass prototype does not have staticProp', function( assert ) {
- assert.equal( typeof FooSuperClass.prototype.staticProp, 'undefined' );
- });
- foo = new FooSuperClass( { instanceProp: 'instancePropValue' } );
- QUnit.test( 'FooSuperClass instance foo extended Class', function( assert ) {
- assert.equal( foo.extended( wp.customize.Class ), true );
- });
- QUnit.test( 'foo instance has protoProp', function( assert ) {
- assert.equal( foo.protoProp, 'protoPropValue' );
- });
- QUnit.test( 'foo instance does not have staticProp', function( assert ) {
- assert.equal( typeof foo.staticProp, 'undefined' );
- });
- QUnit.test( 'FooSuperClass instance foo ran initialize() and has supplied instanceProp', function( assert ) {
- assert.equal( foo.instanceProp, 'instancePropValue' );
- });
- // @todo Test Class.applicator?
- // @todo Do we test object.instance?
- QUnit.module( 'Customize Base: Subclass' );
- BarSubClass = FooSuperClass.extend(
- {
- initialize: function ( instanceProps ) {
- FooSuperClass.prototype.initialize.call( this, instanceProps );
- this.subInstanceProp = 'subInstancePropValue';
- },
- subProtoProp: 'subProtoPropValue'
- },
- {
- subStaticProp: 'subStaticPropValue'
- }
- );
- QUnit.test( 'BarSubClass prototype has subProtoProp', function( assert ) {
- assert.equal( BarSubClass.prototype.subProtoProp, 'subProtoPropValue' );
- });
- QUnit.test( 'BarSubClass prototype has parent FooSuperClass protoProp', function( assert ) {
- assert.equal( BarSubClass.prototype.protoProp, 'protoPropValue' );
- });
- bar = new BarSubClass( { instanceProp: 'instancePropValue' } );
- QUnit.test( 'BarSubClass instance bar its initialize() and parent initialize() run', function( assert ) {
- assert.equal( bar.instanceProp, 'instancePropValue' );
- assert.equal( bar.subInstanceProp, 'subInstancePropValue' );
- });
- QUnit.test( 'BarSubClass instance bar extended FooSuperClass', function( assert ) {
- assert.equal( bar.extended( FooSuperClass ), true );
- });
- // Implements todo: Test Class.constructor() manipulation.
- QUnit.module( 'Customize Base: Constructor Manipulation' );
- newConstructor = function ( instanceProps ) {
- $.extend( this , instanceProps || {} );
- };
- ConstructorTestClass = wp.customize.Class.extend(
- {
- constructor : newConstructor,
- protoProp: 'protoPropValue'
- },
- {
- staticProp: 'staticPropValue'
- }
- );
- QUnit.test( 'New constructor added to class', function( assert ) {
- assert.equal( ConstructorTestClass.prototype.constructor , newConstructor );
- });
- QUnit.test( 'Class with new constructor has protoPropValue', function( assert ) {
- assert.equal( ConstructorTestClass.prototype.protoProp , 'protoPropValue' );
- });
- constructorTest = new ConstructorTestClass( { instanceProp: 'instancePropValue' } );
- QUnit.test( 'ConstructorTestClass instance constructorTest has the new constructor', function( assert ) {
- assert.equal( constructorTest.constructor, newConstructor );
- });
- QUnit.test( 'ConstructorTestClass instance constructorTest extended Class', function( assert ) {
- assert.equal( constructorTest.extended( wp.customize.Class ), true );
- });
- QUnit.test( 'ConstructorTestClass instance constructorTest has the added instance property', function( assert ) {
- assert.equal( constructorTest.instanceProp , 'instancePropValue' );
- });
- QUnit.module( 'Customize Base: wp.customizer.ensure' );
- $mockElement = $( '<div id="mockElement"></div>' );
- QUnit.test( 'Handles jQuery argument', function( assert ) {
- assert.equal( wp.customize.ensure( $mockElement ) , $mockElement );
- });
- mockString = '<div class="mockString"></div>';
- QUnit.test( 'Handles string argument', function( assert ) {
- assert.ok( wp.customize.ensure( mockString ) instanceof jQuery );
- });
- QUnit.module( 'Customize Base: Value Class' );
- firstInitialValue = true;
- firstValueInstance = new wp.customize.Value( firstInitialValue );
- QUnit.test( 'Initialized with the right value', function( assert ) {
- assert.equal( firstValueInstance.get() , firstInitialValue );
- });
- QUnit.test( '.set() works', function( assert ) {
- firstValueInstance.set( false );
- assert.equal( firstValueInstance.get() , false );
- });
- QUnit.test( '.bind() adds new callback that fires on set()', function( assert ) {
- wasCallbackFired = false;
- mockValueCallback = function() {
- wasCallbackFired = true;
- };
- firstValueInstance.bind( mockValueCallback );
- firstValueInstance.set( 'newValue' );
- assert.ok( wasCallbackFired );
- });
- QUnit.module( 'Customize Base: Values Class' );
- valuesInstance = new wp.customize.Values();
- QUnit.test( 'Correct events are triggered when adding to or removing from Values collection', function( assert ) {
- var hasFooOnAdd = false,
- hasFooOnRemove = false,
- hasFooOnRemoved = true,
- valuePassedToAdd = false,
- valuePassedToRemove = false,
- valuePassedToRemoved = false,
- wasEventFiredOnRemoval = false,
- fooValue = new wp.customize.Value( 'foo' );
- // Test events when adding new value.
- valuesInstance.bind( 'add', function( value ) {
- hasFooOnAdd = valuesInstance.has( 'foo' );
- valuePassedToAdd = value;
- } );
- valuesInstance.add( 'foo', fooValue );
- assert.ok( hasFooOnAdd );
- assert.equal( valuePassedToAdd.get(), fooValue.get() );
- // Test events when removing the value.
- valuesInstance.bind( 'remove', function( value ) {
- hasFooOnRemove = valuesInstance.has( 'foo' );
- valuePassedToRemove = value;
- wasEventFiredOnRemoval = true;
- } );
- valuesInstance.bind( 'removed', function( value ) {
- hasFooOnRemoved = valuesInstance.has( 'foo' );
- valuePassedToRemoved = value;
- wasEventFiredOnRemoval = true;
- } );
- valuesInstance.remove( 'foo' );
- assert.ok( hasFooOnRemove );
- assert.equal( valuePassedToRemove.get(), fooValue.get() );
- assert.ok( ! hasFooOnRemoved );
- assert.equal( valuePassedToRemoved.get(), fooValue.get() );
- // Confirm no events are fired when nonexistent value is removed.
- wasEventFiredOnRemoval = false;
- valuesInstance.remove( 'bar' );
- assert.ok( ! wasEventFiredOnRemoval );
- });
- QUnit.module( 'Customize Base: Notification' );
- QUnit.test( 'Notification object exists and has expected properties', function ( assert ) {
- var notification = new wp.customize.Notification( 'mycode', {
- 'message': 'Hello World',
- 'type': 'update',
- 'setting': 'blogname',
- 'fromServer': true,
- 'data': { 'foo': 'bar' }
- } );
- assert.equal( 'mycode', notification.code );
- assert.equal( 'Hello World', notification.message );
- assert.equal( 'update', notification.type );
- assert.equal( 'blogname', notification.setting );
- assert.equal( true, notification.fromServer );
- assert.deepEqual( { 'foo': 'bar' }, notification.data );
- notification = new wp.customize.Notification( 'mycode2', {
- 'message': 'Hello Space'
- } );
- assert.equal( 'mycode2', notification.code );
- assert.equal( 'Hello Space', notification.message );
- assert.equal( 'error', notification.type );
- assert.equal( null, notification.data );
- } );
- QUnit.module( 'Customize Base: utils.parseQueryString' );
- QUnit.test( 'wp.customize.utils.parseQueryString works', function( assert ) {
- var queryParams;
- queryParams = wp.customize.utils.parseQueryString( 'a=1&b=2' );
- assert.ok( _.isEqual( queryParams, { a: '1', b: '2' } ) );
- queryParams = wp.customize.utils.parseQueryString( 'a+b=1&b=Hello%20World' );
- assert.ok( _.isEqual( queryParams, { 'a_b': '1', b: 'Hello World' } ) );
- queryParams = wp.customize.utils.parseQueryString( 'a%20b=1&b=Hello+World' );
- assert.ok( _.isEqual( queryParams, { 'a_b': '1', b: 'Hello World' } ) );
- queryParams = wp.customize.utils.parseQueryString( 'a=1&b' );
- assert.ok( _.isEqual( queryParams, { 'a': '1', b: null } ) );
- queryParams = wp.customize.utils.parseQueryString( 'a=1&b=' );
- assert.ok( _.isEqual( queryParams, { 'a': '1', b: '' } ) );
- } );
- });
|