Current File : /home/jvzmxxx/wiki1/extensions/Wikibase/view/tests/qunit/jquery/ui/jquery.ui.closeable.tests.js
/**
 * @license GPL-2.0+
 * @author H. Snater < mediawiki@snater.com >
 */
( function( $, QUnit ) {
'use strict';

/**
 * @param {Object} [options]
 * @return {jQuery}
 */
function createCloseable( options ) {
	return $( '<div/>' )
		.addClass( 'test_closeable' )
		.closeable( options || {} );
}

QUnit.module( 'jquery.ui.closeable', QUnit.newMwEnvironment( {
	teardown: function() {
		$( '.test_closeable' ).each( function() {
			var $closeable = $( this ),
				closeable = $( this ).data( 'closeable' );

			if ( closeable ) {
				closeable.destroy();
			}

			$closeable.remove();
		} );
	}
} ) );

QUnit.test( 'Create & destroy', function( assert ) {
	assert.expect( 2 );
	var $closeable = createCloseable(),
		closeable = $closeable.data( 'closeable' );

	assert.ok(
		closeable instanceof $.ui.closeable,
		'Initialized widget.'
	);

	closeable.destroy();

	assert.ok(
		$closeable.data( 'closeable' ) === undefined,
		'Destroyed widget.'
	);
} );

QUnit.test( 'Close when clicking "close" anchor', function( assert ) {
	assert.expect( 2 );
	var $closeable = createCloseable( {
			$content: $( '<span>test</span>' )
		} ),
		closeable = $closeable.data( 'closeable' );

	assert.ok(
		closeable.option( '$content' ) instanceof $,
		'Instantiated widget with initial content.'
	);

	closeable.$close.trigger( 'click' );

	assert.strictEqual(
		closeable.option( '$content' ),
		null,
		'Removed content after clicking "close" anchor.'
	);
} );

QUnit.test( 'setContent()', 7, function( assert ) {
	var $closeable = createCloseable(),
		closeable = $closeable.data( 'closeable' ),
		$content = $( '<span>test</span>' );

	$closeable.on( 'closeableupdate', function() {
		assert.ok(
			true,
			'Triggered "update" event.'
		);
	} );

	assert.strictEqual(
		closeable.option( '$content' ),
		null,
		'Instantiated empty widget.'
	);

	closeable.setContent( $content, 'cssClass' );

	assert.equal(
		closeable.option( '$content' ).get( 0 ),
		$content.get( 0 ),
		'Set content.'
	);

	assert.equal(
		closeable.option( 'cssClass' ),
		'cssClass',
		'Set CSS class.'
	);

	closeable.setContent( null, null );

	assert.strictEqual(
		closeable.option( '$content' ),
		null,
		'Removed content.'
	);

	assert.equal(
		closeable.option( 'cssClass' ),
		'',
		'Removed CSS class.'
	);
} );

}( jQuery, QUnit ) );