const mockBundle = require( '../../resources/lib/codemirror6.bundle.dist.js' ); jest.mock( 'ext.CodeMirror.v6.lib', () => mockBundle, { virtual: true } ); const mockCodeMirror = require( '../../resources/codemirror.js' ); jest.mock( 'ext.CodeMirror.v6', () => mockCodeMirror, { virtual: true } ); jest.mock( '../../resources/ext.CodeMirror.data.js', () => jest.fn(), { virtual: true } ); global.mw = require( '@wikimedia/mw-node-qunit/src/mockMediaWiki.js' )(); mw.user = Object.assign( mw.user, { options: { get: jest.fn().mockImplementation( ( key ) => { if ( key === 'codemirror-preferences' ) { return '{"bracketMatching":1,"lineWrapping":1,"activeLine":0,"specialChars":1,"bidiIsolation":1}'; } // Only called for 'usecodemirror' option. return '1'; } ), set: jest.fn() }, sessionId: jest.fn().mockReturnValue( 'abc' ), getId: jest.fn().mockReturnValue( 123 ), isNamed: jest.fn().mockReturnValue( true ) } ); mw.config.get = jest.fn().mockReturnValue( '1000+ edits' ); mw.track = jest.fn(); mw.Api.prototype.saveOption = jest.fn(); global.$ = require( 'jquery' ); $.fn.textSelection = () => {}; window.matchMedia = jest.fn().mockReturnValue( { matches: false } );