mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/CodeMirror
synced 2024-12-18 08:40:33 +00:00
56 lines
1.6 KiB
JavaScript
56 lines
1.6 KiB
JavaScript
|
mw.loader = {
|
||
|
getState: jest.fn().mockReturnValue( '1' )
|
||
|
};
|
||
|
|
||
|
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 ) }
|
||
|
} )
|
||
|
);
|
||
|
} );
|
||
|
} );
|
||
|
|
||
|
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();
|
||
|
} );
|
||
|
} );
|