import createSettingsDialogRenderer, { toggleHelp } from '../../../src/ui/settingsDialogRenderer'; QUnit.module( 'ext.popups/settingsDialogRenderer', { beforeEach() { function render() { return $( '
' ); } function getTemplate() { return { render }; } mw.html = { escape: ( str ) => str }; mw.template = { get: getTemplate }; mw.config = { get() {} }; mw.msg = () => {}; }, afterEach() { mw.msg = null; mw.config = null; mw.template = null; mw.html = null; } } ); QUnit.test( '#toggleHelp', ( assert ) => { const dialog = document.createElement( 'div' ); const main = document.createElement( 'main' ); const save = document.createElement( 'button' ); save.classList.add( 'mwe-popups-settings-help' ); dialog.appendChild( main ); dialog.appendChild( save ); toggleHelp( dialog, true ); assert.strictEqual( main.style.display, 'none' ); assert.strictEqual( save.style.display, '' ); toggleHelp( dialog, false ); assert.strictEqual( main.style.display, '' ); assert.strictEqual( save.style.display, 'none' ); } ); QUnit.test( '#render', ( assert ) => { const main = document.createElement( 'main' ); const boundActions = { saveSettings() {}, hideSettings() {} }, expected = { refresh() {}, appendTo() {}, show() {}, hide() {}, toggleHelp() {}, setEnabled() {} }, dialogRenderer = createSettingsDialogRenderer( mw.config )( boundActions, {} ); // Specifically NOT a deep equal. Only structure. assert.propEqual( dialogRenderer, expected, 'Interface exposed has the expected methods' ); // Sanity checks for some methods assert.strictEqual( main.childElementCount, 0 ); dialogRenderer.appendTo( main ); assert.strictEqual( main.childElementCount, 1 ); assert.strictEqual( $( main.children[ 0 ] ).css( 'display' ), 'block' ); dialogRenderer.hide(); assert.strictEqual( $( main.children[ 0 ] ).css( 'display' ), 'none' ); } ); // FIXME: Add Qunit integration tests about the rendering and the behavior of // the settings dialog.