mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/CodeMirror
synced 2024-12-24 03:23:14 +00:00
aa3876a97e
WikiEditor's ResizingDragBar makes the editor resizable, so we need to set the height to 100%. This was attempted in Ib49d1d9e71 and I4deeda192b but both ultimately suffer from race conditions. Instead we're setting the height in WikiEditor with Ia5e9767e08. The heightExtension in the CodeMirror class still remains, in the event a subclass wishes to override the default behaviour in CM directly and not with CSS. Bug: T357794 Depends-On: Ia5e9767e0814eac29d58bc0d9c1023344a29dd84 Change-Id: Ic55dd098d70fd173ddee7100e392b889ee6ddd08
64 lines
2 KiB
JavaScript
64 lines
2 KiB
JavaScript
mw.loader = { getState: jest.fn() };
|
|
|
|
const CodeMirrorWikiEditor = require( '../../src/codemirror.wikieditor.js' ).default,
|
|
$textarea = $( '<textarea>' )
|
|
.text( 'The Smashing Pumpkins' ),
|
|
cmWe = new CodeMirrorWikiEditor( $textarea );
|
|
|
|
beforeEach( () => {
|
|
// Simulate the button that enables/disables CodeMirror as WikiEditor doesn't exist here.
|
|
const btn = document.createElement( 'span' );
|
|
btn.id = 'mw-editbutton-codemirror';
|
|
btn.classList.add( 'tool' );
|
|
btn.setAttribute( 'rel', 'CodeMirror' );
|
|
document.body.appendChild( btn );
|
|
|
|
// Add WikiEditor context to the textarea.
|
|
cmWe.$textarea.data = jest.fn().mockReturnValue( {
|
|
modules: {
|
|
toolbar: {
|
|
$toolbar: $( btn )
|
|
}
|
|
}
|
|
} );
|
|
|
|
// Initialize CodeMirror.
|
|
cmWe.initialize();
|
|
} );
|
|
|
|
describe( 'addCodeMirrorToWikiEditor', () => {
|
|
cmWe.$textarea.wikiEditor = jest.fn();
|
|
|
|
it( 'should add the button to the toolbar', () => {
|
|
cmWe.addCodeMirrorToWikiEditor();
|
|
expect( cmWe.$textarea.wikiEditor ).toHaveBeenCalledWith(
|
|
'addToToolbar',
|
|
expect.objectContaining( {
|
|
groups: { codemirror: expect.any( Object ) }
|
|
} )
|
|
);
|
|
} );
|
|
|
|
it( 'should be readonly when the textarea is also readonly', () => {
|
|
const textarea = document.createElement( 'textarea' );
|
|
textarea.readOnly = true;
|
|
const cmWe2 = new CodeMirrorWikiEditor( textarea );
|
|
cmWe2.initialize();
|
|
cmWe2.addCodeMirrorToWikiEditor();
|
|
expect( cmWe2.readOnly ).toEqual( true );
|
|
expect( cmWe2.state.readOnly ).toEqual( true );
|
|
} );
|
|
} );
|
|
|
|
describe( 'updateToolbarButton', () => {
|
|
it( 'should update the toolbar button based on the current CodeMirror state', () => {
|
|
const btn = document.getElementById( 'mw-editbutton-codemirror' );
|
|
cmWe.setCodeMirrorPreference( false );
|
|
cmWe.updateToolbarButton();
|
|
expect( btn.classList.contains( 'mw-editbutton-codemirror-active' ) ).toBeFalsy();
|
|
cmWe.setCodeMirrorPreference( true );
|
|
cmWe.updateToolbarButton();
|
|
expect( btn.classList.contains( 'mw-editbutton-codemirror-active' ) ).toBeTruthy();
|
|
} );
|
|
} );
|