Current File : /home/jvzmxxx/wiki1/extensions/Popups/tests/qunit/ext.popups.settings.test.js
// render, renderOption, and addFooterLink are already covered in the browser tests

( function ( $, mw ) {
	QUnit.module( 'ext.popups.settings' );

	QUnit.test( 'save', function ( assert ) {
		var jQueryInit = this.sandbox.stub( jQuery.fn, 'init' ),
			radioButtonValue;

		QUnit.expect( 2 );

		this.sandbox.stub( mw.popups.settings, 'reloadPage' );
		this.sandbox.stub( mw.popups.settings, 'close' );
		jQueryInit.withArgs( 'input[name=mwe-popups-setting]:checked', '#mwe-popups-settings' )
			.returns( {
				val: function () {
					return radioButtonValue;
				}
			} );
		jQueryInit.withArgs( '#mwe-popups-settings-form, #mwe-popups-settings .save' )
			.returns( {
				hide: $.noop
			} );
		jQueryInit.withArgs( '#mwe-popups-settings-help, #mwe-popups-settings .okay' )
			.returns( {
				show: $.noop
			} );

		radioButtonValue = 'simple';
		mw.popups.settings.save();
		assert.equal(
			mw.storage.get( 'mwe-popups-enabled' ),
			'1',
			'Popups are enabled when the `simple` radio button is checked.'
		);

		radioButtonValue = 'off';
		mw.popups.settings.save();
		assert.equal(
			mw.storage.get( 'mwe-popups-enabled' ),
			'0',
			'Popups are disabled when the `off` radio button is checked.'
		);

		jQueryInit.restore();
		mw.popups.settings.reloadPage.restore();
		mw.popups.settings.close.restore();
	} );

	QUnit.test( 'open', function ( assert ) {
		QUnit.expect( 2 );

		mw.popups.settings.open();
		assert.equal(
			( $( window ).width() - mw.popups.settings.$element.outerWidth( true ) ) / 2 + 'px',
			mw.popups.settings.$element.css( 'left' ),
			'Settings dialog is horizontally aligned in the middle.'
		);
		assert.equal(
			( $( window ).height() - mw.popups.settings.$element.outerHeight( true ) ) / 2 + 'px',
			mw.popups.settings.$element.css( 'top' ),
			'Settings dialog is vertically aligned in the middle.'
		);
		mw.popups.settings.close();
	} );

	QUnit.test( 'close', function ( assert ) {
		QUnit.expect( 2 );

		mw.popups.settings.open();
		assert.equal(
			mw.popups.settings.$element.is( ':visible' ),
			true,
			'Settings dialog is visible when settings are opened.'
		);
		mw.popups.settings.close();
		assert.equal(
			mw.popups.settings.$element.is( ':visible' ),
			false,
			'Settings dialog is not visible when settings are closed.'
		);
	} );
} )( jQuery, mediaWiki );