import CodeMirror from '../../src/codemirror.js'; import mediaWikiLang from '../../src/codemirror.mode.mediawiki.js'; const testCases = [ { title: 'wraps HTML tags with span.cm-bidi-isolate', input: 'שלוםשלוםשלום', output: '
שלום<span class="foobar">שלום</span>שלום
' }, { title: 'wraps self-closing extension tags with span.cm-bidi-isolate', input: '', output: '
<ref name="foo" />
' } ]; // Setup CodeMirror instance. const textarea = document.createElement( 'textarea' ); textarea.dir = 'rtl'; document.body.appendChild( textarea ); const cm = new CodeMirror( textarea ); const mwLang = mediaWikiLang( { bidiIsolation: true }, { tags: { ref: true } } ); cm.initialize( [ ...cm.defaultExtensions, mwLang ] ); describe( 'CodeMirrorBidiIsolation', () => { it.each( testCases )( 'bidi isolation ($title)', ( { input, output } ) => { cm.view.dispatch( { changes: { from: 0, to: cm.view.state.doc.length, insert: input } } ); cm.$textarea.textSelection = jest.fn().mockReturnValue( input ); expect( cm.view.dom.querySelector( '.cm-content' ).innerHTML ).toStrictEqual( output ); } ); } );