import { expect } from 'chai'; import type * as CodeMirror from 'codemirror'; import { IRootPosition } from '../positioning'; import { IEditorChange } from '../virtual/editor'; import { CodeMirrorIntegration } from './codemirror'; import { FileEditorFeatureTestEnvironment } from './testutils'; describe('CodeMirrorAdapter', () => { let env: FileEditorFeatureTestEnvironment; beforeEach(() => (env = new FileEditorFeatureTestEnvironment())); afterEach(() => env.dispose()); describe('Works with VirtualFileEditor', () => { it('updates on change', async () => { class UpdateReceivingFeature extends CodeMirrorIntegration { public received_update = false; public last_change: CodeMirror.EditorChange = null as any; public last_change_position: IRootPosition; afterChange(change: IEditorChange, root_position: IRootPosition): void { this.received_update = true; this.last_change = change; this.last_change_position = root_position; } } await env.adapter.widget.context.initialize(true); await env.adapter.widget.context.ready; await env.adapter.initialized; let feature = env.init_integration({ constructor: UpdateReceivingFeature, id: 'UpdateReceivingFeature' }) as UpdateReceivingFeature; await env.adapter.update_finished; expect(feature.received_update).to.equal(false); env.ce_editor.model.value.text = 'fo'; await env.adapter.update_finished; expect(feature.received_update).to.equal(true); expect(feature.last_change.text[0]).to.equal('fo'); }); }); });