Browse Source

Fix tests compilation

akosyakov 8 years ago
parent
commit
385019b276

+ 1 - 0
src/notebook/cells/editor.ts

@@ -135,5 +135,6 @@ export interface ICellEditorWidget extends Widget {
   setCursor(line:number, character:number): void
 
   focus(): void
+  hasFocus(): boolean
 
 }

+ 5 - 1
src/notebook/codemirror/cells/editor.ts

@@ -148,6 +148,10 @@ class CellEditorWidget extends CodeMirrorWidget implements ICellEditorWidget {
       this.editor.focus()
   }
 
+  hasFocus(): boolean {
+      return this.editor.hasFocus()
+  }
+
   getLastLine(): number {
     return this.editor.getDoc().lastLine()
   }
@@ -295,4 +299,4 @@ class CellEditorWidget extends CodeMirrorWidget implements ICellEditorWidget {
 // Define the signals for the `CellEditorWidget` class.
 defineSignal(CellEditorWidget.prototype, 'completionRequested');
 defineSignal(CellEditorWidget.prototype, 'edgeRequested');
-defineSignal(CellEditorWidget.prototype, 'textChanged');
+defineSignal(CellEditorWidget.prototype, 'textChanged');

+ 5 - 1
src/notebook/codemirror/cells/widget.ts

@@ -1,6 +1,10 @@
 // Copyright (c) Jupyter Development Team.
 // Distributed under the terms of the Modified BSD License.
 
+import {
+    ICellEditorWidget
+} from '../../cells/editor';
+
 import {
     CodeCellWidget
 } from '../../cells/widget';
@@ -40,7 +44,7 @@ export class CodeMirrorRenderer extends CodeCellWidget.Renderer {
         this._editorInitializer = options.editorInitializer || this._editorInitializer
     }
 
-    createCellEditor(): CellEditorWidget {
+    createCellEditor(): ICellEditorWidget {
         const widget = new CellEditorWidget(this._editorConfiguration);
         this._editorInitializer(widget);
         return widget;

+ 5 - 1
test/src/notebook/cells/editor.spec.ts

@@ -15,9 +15,13 @@ import {
 } from '../../../../lib/notebook/cells';
 
 import {
-  CellEditorWidget, ITextChange, ICompletionRequest, EdgeLocation
+  ITextChange, ICompletionRequest, EdgeLocation
 } from '../../../../lib/notebook/cells/editor';
 
+import {
+  CellEditorWidget
+} from '../../../../lib/notebook/codemirror/cells/editor';
+
 
 const UP_ARROW = 38;
 

+ 119 - 61
test/src/notebook/cells/widget.spec.ts

@@ -25,12 +25,24 @@ import {
   RawCellWidget
 } from '../../../../lib/notebook/cells';
 
+import {
+  CellEditorWidget
+} from '../../../../lib/notebook/codemirror/cells/editor';
+
+import {
+  CodeMirrorRenderer, defaultCodeMirrorRenderer
+} from '../../../../lib/notebook/codemirror/cells/widget';
+
+import {
+  defaultCodeCellRenderer, defaultMarkdownCellRenderer, defaultRawCellRenderer
+} from '../../../../lib/notebook/codemirror/notebook/widget';
+
 import {
   OutputAreaWidget
 } from '../../../../lib/notebook/output-area';
 
 import {
-  CellEditorWidget
+  ICellEditorWidget
 } from '../../../../lib/notebook/cells/editor';
 
 
@@ -52,6 +64,12 @@ class LogBaseCell extends BaseCellWidget {
 
   methods: string[] = [];
 
+  constructor() {
+    super({
+      renderer: defaultCodeMirrorRenderer
+    })
+  }
+
   protected onAfterAttach(msg: Message): void {
     super.onAfterAttach(msg);
     this.methods.push('onAfterAttach');
@@ -116,15 +134,15 @@ class LogMarkdownCell extends MarkdownCellWidget {
 }
 
 
-class LogRenderer extends CodeCellWidget.Renderer {
+class LogRenderer extends CodeMirrorRenderer {
   methods: string[] = [];
 
-  createCellEditor(model: ICellModel): CellEditorWidget {
+  createCellEditor(): ICellEditorWidget {
     this.methods.push('createCellEditor');
-    return super.createCellEditor(model);
+    return super.createCellEditor();
   }
 
-  createInputArea(editor: CellEditorWidget): InputAreaWidget {
+  createInputArea(editor: ICellEditorWidget): InputAreaWidget {
     this.methods.push('createInputArea');
     return super.createInputArea(editor);
   }
@@ -143,7 +161,9 @@ describe('notebook/cells/widget', () => {
     describe('#constructor()', () => {
 
       it('should create a base cell widget', () => {
-        let widget = new BaseCellWidget();
+        let widget = new BaseCellWidget({
+          renderer: defaultCodeMirrorRenderer
+        });
         expect(widget).to.be.a(BaseCellWidget);
       });
 
@@ -166,7 +186,9 @@ describe('notebook/cells/widget', () => {
 
       it('should be settable', () => {
         let model = new CellModel();
-        let widget = new BaseCellWidget();
+        let widget = new BaseCellWidget({
+          renderer: defaultCodeMirrorRenderer
+        });
         expect(widget.model).to.be(null);
         widget.model = model;
         expect(widget.model).to.be(model);
@@ -179,7 +201,9 @@ describe('notebook/cells/widget', () => {
     describe('#modelChanged', () => {
 
       it('should emit a signal when the model changes', () => {
-        let widget = new BaseCellWidget();
+        let widget = new BaseCellWidget({
+          renderer: defaultCodeMirrorRenderer
+        });
         let called = false;
         widget.modelChanged.connect(() => { called = true; });
         expect(called).to.be(false);
@@ -188,7 +212,9 @@ describe('notebook/cells/widget', () => {
       });
 
       it('should not emit a signal when the model has not changed', () => {
-        let widget = new BaseCellWidget();
+        let widget = new BaseCellWidget({
+          renderer: defaultCodeMirrorRenderer
+        });
         let model = new CellModel();
         let called = 0;
         widget.modelChanged.connect(() => { called++; });
@@ -204,12 +230,16 @@ describe('notebook/cells/widget', () => {
     describe('#editor', () => {
 
       it('should be a cell editor widget', () => {
-        let widget = new BaseCellWidget();
+        let widget = new BaseCellWidget({
+          renderer: defaultCodeMirrorRenderer
+        });
         expect(widget.editor).to.be.a(CellEditorWidget);
       });
 
       it('should be read-only', () => {
-        let widget = new BaseCellWidget();
+        let widget = new BaseCellWidget({
+          renderer: defaultCodeMirrorRenderer
+        });
         expect(() => { widget.editor = null; }).to.throwError();
       });
 
@@ -218,30 +248,40 @@ describe('notebook/cells/widget', () => {
     describe('#mimetype', () => {
 
       it('should be a string', () => {
-        let widget = new BaseCellWidget();
+        let widget = new BaseCellWidget({
+          renderer: defaultCodeMirrorRenderer
+        });
         expect(typeof widget.mimetype).to.be('string');
       });
 
       it('should default to text/plain', () => {
-        let widget = new BaseCellWidget();
+        let widget = new BaseCellWidget({
+          renderer: defaultCodeMirrorRenderer
+        });
         expect(widget.mimetype).to.be('text/plain');
       });
 
       it('should supporting being set to other types', () => {
-        let widget = new BaseCellWidget();
+        let widget = new BaseCellWidget({
+          renderer: defaultCodeMirrorRenderer
+        });
         widget.mimetype = 'test/test';
         expect(widget.mimetype).to.be('test/test');
       });
 
       it('should be safe to set multiple times', () => {
-        let widget = new BaseCellWidget();
+        let widget = new BaseCellWidget({
+          renderer: defaultCodeMirrorRenderer
+        });
         widget.mimetype = 'test/test';
         widget.mimetype = 'test/test';
         expect(widget.mimetype).to.be('test/test');
       });
 
       it('should not allow being set to empty or null strings', () => {
-        let widget = new BaseCellWidget();
+        let widget = new BaseCellWidget({
+          renderer: defaultCodeMirrorRenderer
+        });
         widget.mimetype = null;
         expect(widget.mimetype).to.be('text/plain');
         widget.mimetype = '';
@@ -253,17 +293,23 @@ describe('notebook/cells/widget', () => {
     describe('#readOnly', () => {
 
       it('should be a boolean', () => {
-        let widget = new BaseCellWidget();
+        let widget = new BaseCellWidget({
+          renderer: defaultCodeMirrorRenderer
+        });
         expect(typeof widget.readOnly).to.be('boolean');
       });
 
       it('should default to false', () => {
-        let widget = new BaseCellWidget();
+        let widget = new BaseCellWidget({
+          renderer: defaultCodeMirrorRenderer
+        });
         expect(widget.readOnly).to.be(false);
       });
 
       it('should be settable', () => {
-        let widget = new BaseCellWidget();
+        let widget = new BaseCellWidget({
+          renderer: defaultCodeMirrorRenderer
+        });
         widget.readOnly = true;
         expect(widget.readOnly).to.be(true);
       });
@@ -283,24 +329,32 @@ describe('notebook/cells/widget', () => {
     describe('#trusted', () => {
 
       it('should be a boolean', () => {
-        let widget = new BaseCellWidget();
+        let widget = new BaseCellWidget({
+          renderer: defaultCodeMirrorRenderer
+        });
         expect(typeof widget.trusted).to.be('boolean');
       });
 
       it('should default to false', () => {
-        let widget = new BaseCellWidget();
+        let widget = new BaseCellWidget({
+          renderer: defaultCodeMirrorRenderer
+        });
         expect(widget.trusted).to.be(false);
       });
 
       it('should be settable', () => {
-        let widget = new BaseCellWidget();
+        let widget = new BaseCellWidget({
+          renderer: defaultCodeMirrorRenderer
+        });
         widget.model = new CellModel();
         widget.trusted = true;
         expect(widget.trusted).to.be(true);
       });
 
       it('should do nothing if there is no model', () => {
-        let widget = new BaseCellWidget();
+        let widget = new BaseCellWidget({
+          renderer: defaultCodeMirrorRenderer
+        });
         expect(widget.trusted).to.be(false);
         widget.trusted = true;
         expect(widget.trusted).to.be(false);
@@ -311,11 +365,13 @@ describe('notebook/cells/widget', () => {
     describe('#focus()', () => {
 
       it('should focus the cell editor', () => {
-        let widget = new BaseCellWidget();
-        Widget.attach(widget, document.body);
-        expect(widget.editor.editor.hasFocus()).to.be(false);
+        let widget = new BaseCellWidget({
+          renderer: defaultCodeMirrorRenderer
+        });
+        widget.attach(document.body);
+        expect(widget.editor.hasFocus()).to.be(false);
         widget.focus();
-        expect(widget.editor.editor.hasFocus()).to.be(true);
+        expect(widget.editor.hasFocus()).to.be(true);
         widget.dispose();
       });
 
@@ -324,7 +380,9 @@ describe('notebook/cells/widget', () => {
     describe('#setPrompt()', () => {
 
       it('should not throw an error (full test in input area)', () => {
-        let widget = new BaseCellWidget();
+        let widget = new BaseCellWidget({
+          renderer: defaultCodeMirrorRenderer
+        });
         expect(() => { widget.setPrompt(void 0); }).to.not.throwError();
         expect(() => { widget.setPrompt(null); }).to.not.throwError();
         expect(() => { widget.setPrompt(''); }).to.not.throwError();
@@ -337,7 +395,7 @@ describe('notebook/cells/widget', () => {
     describe('#toggleInput()', () => {
 
       it('should toggle whether the input is shown', () => {
-        let widget = new BaseCellWidget();
+        let widget = new BaseCellWidget({renderer: defaultCodeMirrorRenderer});
         let input = widget.node.getElementsByClassName(INPUT_CLASS)[0];
         Widget.attach(widget, document.body);
         expect(window.getComputedStyle(input).display).to.not.be('none');
@@ -352,13 +410,13 @@ describe('notebook/cells/widget', () => {
     describe('#dispose()', () => {
 
       it('should dispose of the resources held by the widget', () => {
-        let widget = new BaseCellWidget();
+        let widget = new BaseCellWidget({renderer: defaultCodeMirrorRenderer});
         widget.dispose();
         expect(widget.isDisposed).to.be(true);
       });
 
       it('should be safe to call multiple times', () => {
-        let widget = new BaseCellWidget();
+        let widget = new BaseCellWidget({renderer: defaultCodeMirrorRenderer});
         widget.dispose();
         widget.dispose();
         expect(widget.isDisposed).to.be(true);
@@ -436,7 +494,7 @@ describe('notebook/cells/widget', () => {
       describe('#constructor()', () => {
 
         it('should create a renderer', () => {
-          let renderer = new BaseCellWidget.Renderer();
+          let renderer = new CodeMirrorRenderer();
           expect(renderer).to.be.a(BaseCellWidget.Renderer);
         });
 
@@ -445,8 +503,8 @@ describe('notebook/cells/widget', () => {
       describe('#createCellEditor()', () => {
 
         it('should create a cell editor widget', () => {
-          let renderer = new BaseCellWidget.Renderer();
-          let editor = renderer.createCellEditor(new CellModel());
+          let renderer = new CodeMirrorRenderer();
+          let editor = renderer.createCellEditor();
           expect(editor).to.be.a(CellEditorWidget);
         });
 
@@ -455,8 +513,8 @@ describe('notebook/cells/widget', () => {
       describe('#createInputArea()', () => {
 
         it('should create an input area widget', () => {
-          let renderer = new BaseCellWidget.Renderer();
-          let editor = renderer.createCellEditor(new CellModel());
+          let renderer = new CodeMirrorRenderer();
+          let editor = renderer.createCellEditor();
           let input = renderer.createInputArea(editor);
           expect(input).to.be.an(InputAreaWidget);
         });
@@ -466,7 +524,7 @@ describe('notebook/cells/widget', () => {
       describe('#defaultRenderer', () => {
 
         it('should be a renderer', () => {
-          let defaultRenderer = BaseCellWidget.defaultRenderer;
+          let defaultRenderer = defaultCodeMirrorRenderer;
           expect(defaultRenderer).to.be.a(BaseCellWidget.Renderer);
         });
 
@@ -481,7 +539,7 @@ describe('notebook/cells/widget', () => {
     describe('#constructor()', () => {
 
       it('should create a code cell widget', () => {
-        let widget = new CodeCellWidget({ rendermime });
+        let widget = new CodeCellWidget({ rendermime, renderer: defaultCodeCellRenderer });
         expect(widget).to.be.a(CodeCellWidget);
       });
 
@@ -506,13 +564,13 @@ describe('notebook/cells/widget', () => {
     describe('#dispose()', () => {
 
       it('should dispose of the resources held by the widget', () => {
-        let widget = new CodeCellWidget({ rendermime });
+        let widget = new CodeCellWidget({ rendermime, renderer: defaultCodeCellRenderer });
         widget.dispose();
         expect(widget.isDisposed).to.be(true);
       });
 
       it('should be safe to call multiple times', () => {
-        let widget = new CodeCellWidget({ rendermime });
+        let widget = new CodeCellWidget({ rendermime, renderer: defaultCodeCellRenderer });
         widget.dispose();
         widget.dispose();
         expect(widget.isDisposed).to.be(true);
@@ -523,14 +581,14 @@ describe('notebook/cells/widget', () => {
     describe('#execute()', () => {
 
       it('should fulfill a promise if there is no code to execute', (done) => {
-        let widget = new CodeCellWidget({ rendermime });
+        let widget = new CodeCellWidget({ rendermime, renderer: defaultCodeCellRenderer });
         let kernel = new MockKernel();
         widget.model = new CodeCellModel();
         widget.execute(kernel).then(() => { done(); });
       });
 
       it('should fulfill a promise if there is code to execute', (done) => {
-        let widget = new CodeCellWidget({ rendermime });
+        let widget = new CodeCellWidget({ rendermime, renderer: defaultCodeCellRenderer });
         let kernel = new MockKernel();
         widget.model = new CodeCellModel();
         widget.model.source = 'foo';
@@ -548,7 +606,7 @@ describe('notebook/cells/widget', () => {
     describe('#onUpdateRequest()', () => {
 
       it('should update the widget', () => {
-        let widget = new LogCodeCell({ rendermime });
+        let widget = new LogCodeCell({ rendermime, renderer: defaultCodeCellRenderer });
         expect(widget.methods).to.not.contain('onUpdateRequest');
         sendMessage(widget, WidgetMessage.UpdateRequest);
         expect(widget.methods).to.contain('onUpdateRequest');
@@ -560,7 +618,7 @@ describe('notebook/cells/widget', () => {
 
       it('should fire when the model changes', () => {
         let method = 'onModelChanged';
-        let widget = new LogCodeCell({ rendermime });
+        let widget = new LogCodeCell({ rendermime, renderer: defaultCodeCellRenderer });
         expect(widget.methods).to.not.contain(method);
         widget.model = new CodeCellModel();
         expect(widget.methods).to.contain(method);
@@ -572,7 +630,7 @@ describe('notebook/cells/widget', () => {
 
       it('should fire when model state changes', () => {
         let method = 'onModelStateChanged';
-        let widget = new LogCodeCell({ rendermime });
+        let widget = new LogCodeCell({ rendermime, renderer: defaultCodeCellRenderer });
         widget.model = new CodeCellModel();
         expect(widget.methods).to.not.contain(method);
         widget.model.source = 'foo';
@@ -585,7 +643,7 @@ describe('notebook/cells/widget', () => {
 
       it('should fire when model metadata changes', () => {
         let method = 'onMetadataChanged';
-        let widget = new LogCodeCell({ rendermime });
+        let widget = new LogCodeCell({ rendermime, renderer: defaultCodeCellRenderer });
         widget.model = new CodeCellModel();
         expect(widget.methods).to.not.contain(method);
         widget.model.metadataChanged.emit({
@@ -603,7 +661,7 @@ describe('notebook/cells/widget', () => {
       describe('#constructor()', () => {
 
         it('should create a renderer', () => {
-          let renderer = new CodeCellWidget.Renderer();
+          let renderer = new CodeMirrorRenderer();
           expect(renderer).to.be.a(CodeCellWidget.Renderer);
         });
 
@@ -612,7 +670,7 @@ describe('notebook/cells/widget', () => {
       describe('#createOutputArea()', () => {
 
         it('should create an output area widget', () => {
-          let renderer = new CodeCellWidget.Renderer();
+          let renderer = new CodeMirrorRenderer();
           let output = renderer.createOutputArea(rendermime);
           expect(output).to.be.an(OutputAreaWidget);
         });
@@ -622,7 +680,7 @@ describe('notebook/cells/widget', () => {
       describe('#defaultRenderer', () => {
 
         it('should be a renderer', () => {
-          let defaultRenderer = CodeCellWidget.defaultRenderer;
+          let defaultRenderer = defaultCodeCellRenderer;
           expect(defaultRenderer).to.be.a(CodeCellWidget.Renderer);
         });
 
@@ -637,7 +695,7 @@ describe('notebook/cells/widget', () => {
     describe('#constructor()', () => {
 
       it('should create a markdown cell widget', () => {
-        let widget = new MarkdownCellWidget({ rendermime });
+        let widget = new MarkdownCellWidget({ rendermime, renderer: defaultMarkdownCellRenderer });
         expect(widget).to.be.a(MarkdownCellWidget);
       });
 
@@ -655,7 +713,7 @@ describe('notebook/cells/widget', () => {
       });
 
       it('should set the default mimetype to text/x-ipythongfm', () => {
-        let widget = new MarkdownCellWidget({ rendermime });
+        let widget = new MarkdownCellWidget({ rendermime, renderer: defaultMarkdownCellRenderer });
         expect(widget.mimetype).to.be('text/x-ipythongfm');
       });
 
@@ -664,8 +722,8 @@ describe('notebook/cells/widget', () => {
     describe('#rendered', () => {
 
       it('should default to true', (done) => {
-        let widget = new MarkdownCellWidget({ rendermime });
-        Widget.attach(widget, document.body);
+        let widget = new MarkdownCellWidget({ rendermime, renderer: defaultMarkdownCellRenderer });
+        widget.attach(document.body);
         expect(widget.rendered).to.be(true);
         requestAnimationFrame(() => {
           expect(widget.node.classList.contains(RENDERED_CLASS)).to.be(true);
@@ -675,8 +733,8 @@ describe('notebook/cells/widget', () => {
       });
 
       it('should unrender the widget', (done) => {
-        let widget = new MarkdownCellWidget({ rendermime });
-        Widget.attach(widget, document.body);
+        let widget = new MarkdownCellWidget({ rendermime, renderer: defaultMarkdownCellRenderer });
+        widget.attach(document.body);
         widget.rendered = false;
         requestAnimationFrame(() => {
           expect(widget.node.classList.contains(RENDERED_CLASS)).to.be(false);
@@ -686,8 +744,8 @@ describe('notebook/cells/widget', () => {
       });
 
       it('should ignore being set to the same value', (done) => {
-        let widget = new LogMarkdownCell({ rendermime });
-        Widget.attach(widget, document.body);
+        let widget = new LogMarkdownCell({ rendermime, renderer: defaultMarkdownCellRenderer });
+        widget.attach(document.body);
         widget.rendered = false;
         widget.rendered = false;
         requestAnimationFrame(() => {
@@ -704,13 +762,13 @@ describe('notebook/cells/widget', () => {
     describe('#dispose()', () => {
 
       it('should dispose of the resources held by the widget', () => {
-        let widget = new MarkdownCellWidget({ rendermime });
+        let widget = new MarkdownCellWidget({ rendermime, renderer: defaultMarkdownCellRenderer });
         widget.dispose();
         expect(widget.isDisposed).to.be(true);
       });
 
       it('should be safe to call multiple times', () => {
-        let widget = new MarkdownCellWidget({ rendermime });
+        let widget = new MarkdownCellWidget({ rendermime, renderer: defaultMarkdownCellRenderer });
         widget.dispose();
         widget.dispose();
         expect(widget.isDisposed).to.be(true);
@@ -721,7 +779,7 @@ describe('notebook/cells/widget', () => {
     describe('#onUpdateRequest()', () => {
 
       it('should update the widget', () => {
-        let widget = new LogMarkdownCell({ rendermime });
+        let widget = new LogMarkdownCell({ rendermime, renderer: defaultMarkdownCellRenderer });
         expect(widget.methods).to.not.contain('onUpdateRequest');
         sendMessage(widget, WidgetMessage.UpdateRequest);
         expect(widget.methods).to.contain('onUpdateRequest');
@@ -736,7 +794,7 @@ describe('notebook/cells/widget', () => {
     describe('#constructor()', () => {
 
       it('should create a raw cell widget', () => {
-        let widget = new RawCellWidget();
+        let widget = new RawCellWidget({renderer:defaultRawCellRenderer});
         expect(widget).to.be.a(RawCellWidget);
       });
 

+ 16 - 12
test/src/notebook/completion/handler.spec.ts

@@ -16,13 +16,17 @@ import {
 } from '../../../../lib/notebook/cells';
 
 import {
-  ICompletionRequest, CellEditorWidget, ITextChange
+  ICompletionRequest, ICellEditorWidget, ITextChange
 } from '../../../../lib/notebook/cells/editor';
 
 import {
   CompletionWidget, CellCompletionHandler, CompletionModel, ICompletionPatch
 } from '../../../../lib/notebook/completion';
 
+import {
+  defaultCodeMirrorRenderer
+} from '../../../../lib/notebook/codemirror/cells/widget';
+
 
 class TestCompletionModel extends CompletionModel {
   methods: string[] = [];
@@ -53,12 +57,12 @@ class TestCompletionHandler extends CellCompletionHandler {
     this.methods.push('onReply');
   }
 
-  onTextChanged(editor: CellEditorWidget, change: ITextChange): void {
+  onTextChanged(editor: ICellEditorWidget, change: ITextChange): void {
     super.onTextChanged(editor, change);
     this.methods.push('onTextChanged');
   }
 
-  onCompletionRequested(editor: CellEditorWidget, request: ICompletionRequest): void {
+  onCompletionRequested(editor: ICellEditorWidget, request: ICompletionRequest): void {
     super.onCompletionRequested(editor, request);
     this.methods.push('onCompletionRequested');
   }
@@ -111,7 +115,7 @@ describe('notebook/completion/handler', () => {
 
       it('should be settable', () => {
         let handler = new CellCompletionHandler(new CompletionWidget());
-        let cell = new BaseCellWidget();
+        let cell = new BaseCellWidget({renderer:defaultCodeMirrorRenderer});
         expect(handler.activeCell).to.be(null);
         handler.activeCell = cell;
         expect(handler.activeCell).to.be.a(BaseCellWidget);
@@ -120,8 +124,8 @@ describe('notebook/completion/handler', () => {
 
       it('should be resettable', () => {
         let handler = new CellCompletionHandler(new CompletionWidget());
-        let one = new BaseCellWidget();
-        let two = new BaseCellWidget();
+        let one = new BaseCellWidget({renderer:defaultCodeMirrorRenderer});
+        let two = new BaseCellWidget({renderer:defaultCodeMirrorRenderer});
         expect(handler.activeCell).to.be(null);
         handler.activeCell = one;
         expect(handler.activeCell).to.be.a(BaseCellWidget);
@@ -311,7 +315,7 @@ describe('notebook/completion/handler', () => {
           oldValue: 'fo',
           newValue: 'foo'
         };
-        let cell = new BaseCellWidget();
+        let cell = new BaseCellWidget({renderer:defaultCodeMirrorRenderer});
 
         handler.activeCell = cell;
         expect(handler.methods).to.not.contain('onTextChanged');
@@ -334,7 +338,7 @@ describe('notebook/completion/handler', () => {
           oldValue: 'fo',
           newValue: 'foo'
         };
-        let cell = new BaseCellWidget();
+        let cell = new BaseCellWidget({renderer:defaultCodeMirrorRenderer});
         let model = completion.model as TestCompletionModel;
 
         handler.activeCell = cell;
@@ -358,7 +362,7 @@ describe('notebook/completion/handler', () => {
           position: 0,
           currentValue: 'foo'
         };
-        let cell = new BaseCellWidget();
+        let cell = new BaseCellWidget({renderer:defaultCodeMirrorRenderer});
 
         handler.activeCell = cell;
         expect(handler.methods).to.not.contain('onCompletionRequested');
@@ -380,7 +384,7 @@ describe('notebook/completion/handler', () => {
           position: 0,
           currentValue: 'foo'
         };
-        let cell = new BaseCellWidget();
+        let cell = new BaseCellWidget({renderer:defaultCodeMirrorRenderer});
         let model = completion.model as TestCompletionModel;
 
         handler.kernel = new MockKernel();
@@ -410,7 +414,7 @@ describe('notebook/completion/handler', () => {
         let handler = new TestCompletionHandler(completion);
         let model = completion.model as TestCompletionModel;
 
-        handler.activeCell = new BaseCellWidget();
+        handler.activeCell = new BaseCellWidget({renderer:defaultCodeMirrorRenderer});
         expect(model.methods).to.not.contain('createPatch');
         completion.selected.emit('foo');
         expect(model.methods).to.contain('createPatch');
@@ -421,7 +425,7 @@ describe('notebook/completion/handler', () => {
         let patch = 'foobar';
         let completion = new CompletionWidget({ model });
         let handler = new TestCompletionHandler(completion);
-        let cell = new BaseCellWidget();
+        let cell = new BaseCellWidget({renderer:defaultCodeMirrorRenderer});
         let request: ICompletionRequest = {
           ch: 0,
           chHeight: 0,

+ 8 - 1
test/src/notebook/notebook/actions.spec.ts

@@ -39,6 +39,10 @@ import {
   DEFAULT_CONTENT
 } from '../utils';
 
+import {
+  defaultCodeMirrorRenderer
+} from '../../../../lib/notebook/codemirror/notebook/widget';
+
 
 const clipboard = new MimeData();
 
@@ -51,7 +55,10 @@ describe('notebook/notebook/actions', () => {
     let kernel: IKernel;
 
     beforeEach(() => {
-      widget = new Notebook({ rendermime: defaultRenderMime() });
+      widget = new Notebook({ 
+        rendermime: defaultRenderMime(),
+        renderer:defaultCodeMirrorRenderer
+      });
       let model = new NotebookModel();
       model.fromJSON(DEFAULT_CONTENT);
       widget.model = model;

+ 5 - 1
test/src/notebook/notebook/default-toolbar.spec.ts

@@ -43,6 +43,10 @@ import {
   DEFAULT_CONTENT
 } from '../utils';
 
+import {
+  defaultCodeMirrorRenderer
+} from '../../../../lib/notebook/codemirror/notebook/panel';
+
 
 /**
  * Default data.
@@ -59,7 +63,7 @@ describe('notebook/notebook/default-toolbar', () => {
     let context: MockContext<NotebookModel>;
 
     beforeEach((done) => {
-      panel = new NotebookPanel({ rendermime, clipboard });
+      panel = new NotebookPanel({ rendermime, clipboard, renderer: defaultCodeMirrorRenderer });
       let model = new NotebookModel();
       model.fromJSON(DEFAULT_CONTENT);
       context = new MockContext<NotebookModel>(model);

+ 39 - 31
test/src/notebook/notebook/panel.spec.ts

@@ -19,6 +19,10 @@ import {
   IDocumentContext
 } from '../../../../lib/docregistry';
 
+import {
+  ICellEditorWidget, ITextChange, ICompletionRequest
+} from '../../../../lib/notebook/cells/editor';
+
 import {
   CompletionWidget
 } from '../../../../lib/notebook/completion';
@@ -51,6 +55,10 @@ import {
   DEFAULT_CONTENT
 } from '../utils';
 
+import {
+  defaultCodeMirrorRenderer, CodeMirrorRenderer
+} from '../../../../lib/notebook/codemirror/notebook/panel';
+
 
 /**
  * Default data.
@@ -86,7 +94,7 @@ class LogNotebookPanel extends NotebookPanel {
 
 
 function createPanel(): LogNotebookPanel {
-  let panel = new LogNotebookPanel({ rendermime, clipboard });
+  let panel = new LogNotebookPanel({ rendermime, clipboard, renderer: defaultCodeMirrorRenderer });
   let model = new NotebookModel();
   model.fromJSON(DEFAULT_CONTENT);
   let context = new MockContext<NotebookModel>(model);
@@ -102,13 +110,13 @@ describe('notebook/notebook/panel', () => {
     describe('#constructor()', () => {
 
       it('should create a notebook panel', () => {
-        let panel = new NotebookPanel({ rendermime, clipboard });
+        let panel = new NotebookPanel({ rendermime, clipboard, renderer: defaultCodeMirrorRenderer });
         expect(panel).to.be.a(NotebookPanel);
       });
 
 
       it('should accept an optional render', () => {
-        let renderer = new NotebookPanel.Renderer();
+        let renderer = new CodeMirrorRenderer();
         let panel = new NotebookPanel({ rendermime, clipboard, renderer });
         expect(panel.renderer).to.be(renderer);
       });
@@ -118,7 +126,7 @@ describe('notebook/notebook/panel', () => {
     describe('#contextChanged', () => {
 
       it('should be emitted when the context on the panel changes', () => {
-        let panel = new NotebookPanel({ rendermime, clipboard });
+        let panel = new NotebookPanel({ rendermime, clipboard, renderer: defaultCodeMirrorRenderer });
         let called = false;
         let model = new NotebookModel();
         let context = new MockContext<INotebookModel>(model);
@@ -132,7 +140,7 @@ describe('notebook/notebook/panel', () => {
       });
 
       it('should not be emitted if the context does not change', () => {
-        let panel = new NotebookPanel({ rendermime, clipboard });
+        let panel = new NotebookPanel({ rendermime, clipboard, renderer: defaultCodeMirrorRenderer });
         let called = false;
         let model = new NotebookModel();
         let context = new MockContext<INotebookModel>(model);
@@ -163,12 +171,12 @@ describe('notebook/notebook/panel', () => {
     describe('#toolbar', () => {
 
       it('should be the toolbar used by the widget', () => {
-        let panel = new NotebookPanel({ rendermime, clipboard });
+        let panel = new NotebookPanel({ rendermime, clipboard, renderer: defaultCodeMirrorRenderer });
         expect(panel.toolbar).to.be.a(NotebookToolbar);
       });
 
       it('should be read-only', () => {
-        let panel = new NotebookPanel({ rendermime, clipboard });
+        let panel = new NotebookPanel({ rendermime, clipboard, renderer: defaultCodeMirrorRenderer });
         expect(() => { panel.toolbar = null; }).to.throwError();
       });
 
@@ -177,12 +185,12 @@ describe('notebook/notebook/panel', () => {
     describe('#content', () => {
 
       it('should be the content area used by the widget', () => {
-        let panel = new NotebookPanel({ rendermime, clipboard });
+        let panel = new NotebookPanel({ rendermime, clipboard, renderer: defaultCodeMirrorRenderer });
         expect(panel.content).to.be.a(Notebook);
       });
 
       it('should be read-only', () => {
-        let panel = new NotebookPanel({ rendermime, clipboard });
+        let panel = new NotebookPanel({ rendermime, clipboard, renderer: defaultCodeMirrorRenderer });
         expect(() => { panel.content = null; }).to.throwError();
       });
 
@@ -198,7 +206,7 @@ describe('notebook/notebook/panel', () => {
       });
 
       it('should be read-only', () => {
-        let panel = new NotebookPanel({ rendermime, clipboard });
+        let panel = new NotebookPanel({ rendermime, clipboard, renderer: defaultCodeMirrorRenderer });
         expect(() => { panel.kernel = null; }).to.throwError();
       });
 
@@ -207,12 +215,12 @@ describe('notebook/notebook/panel', () => {
     describe('#rendermime', () => {
 
       it('should be the rendermime instance used by the widget', () => {
-        let panel = new NotebookPanel({ rendermime, clipboard });
+        let panel = new NotebookPanel({ rendermime, clipboard, renderer: defaultCodeMirrorRenderer });
         expect(panel.rendermime).to.be(rendermime);
       });
 
       it('should be read-only', () => {
-        let panel = new NotebookPanel({ rendermime, clipboard });
+        let panel = new NotebookPanel({ rendermime, clipboard, renderer: defaultCodeMirrorRenderer });
         expect(() => { panel.rendermime = null; }).to.throwError();
       });
 
@@ -221,13 +229,13 @@ describe('notebook/notebook/panel', () => {
     describe('#renderer', () => {
 
       it('should be the renderer used by the widget', () => {
-        let renderer = new NotebookPanel.Renderer();
+        let renderer = new CodeMirrorRenderer();
         let panel = new NotebookPanel({ rendermime, clipboard, renderer });
         expect(panel.renderer).to.be(renderer);
       });
 
       it('should be read-only', () => {
-        let panel = new NotebookPanel({ rendermime, clipboard });
+        let panel = new NotebookPanel({ rendermime, clipboard, renderer: defaultCodeMirrorRenderer });
         expect(() => { panel.renderer = null; });
       });
 
@@ -236,12 +244,12 @@ describe('notebook/notebook/panel', () => {
     describe('#clipboard', () => {
 
       it('should be the clipboard instance used by the widget', () => {
-        let panel = new NotebookPanel({ rendermime, clipboard });
+        let panel = new NotebookPanel({ rendermime, clipboard, renderer: defaultCodeMirrorRenderer });
         expect(panel.clipboard).to.be(clipboard);
       });
 
       it('should be read-only', () => {
-        let panel = new NotebookPanel({ rendermime, clipboard });
+        let panel = new NotebookPanel({ rendermime, clipboard, renderer: defaultCodeMirrorRenderer });
         expect(() => { panel.clipboard = null; }).to.throwError();
       });
 
@@ -250,7 +258,7 @@ describe('notebook/notebook/panel', () => {
     describe('#model', () => {
 
       it('should be the model for the widget', () => {
-        let panel = new NotebookPanel({ rendermime, clipboard });
+        let panel = new NotebookPanel({ rendermime, clipboard, renderer: defaultCodeMirrorRenderer });
         expect(panel.model).to.be(null);
         let model = new NotebookModel();
         let context = new MockContext<NotebookModel>(model);
@@ -260,7 +268,7 @@ describe('notebook/notebook/panel', () => {
       });
 
       it('should be read-only', () => {
-        let panel = new NotebookPanel({ rendermime, clipboard });
+        let panel = new NotebookPanel({ rendermime, clipboard, renderer: defaultCodeMirrorRenderer });
         expect(() => { panel.model = null; }).to.throwError();
       });
 
@@ -269,12 +277,12 @@ describe('notebook/notebook/panel', () => {
     describe('#context', () => {
 
       it('should get the document context for the widget', () => {
-        let panel = new NotebookPanel({ rendermime, clipboard });
+        let panel = new NotebookPanel({ rendermime, clipboard, renderer: defaultCodeMirrorRenderer });
         expect(panel.context).to.be(null);
       });
 
       it('should set the document context for the widget', () => {
-        let panel = new NotebookPanel({ rendermime, clipboard });
+        let panel = new NotebookPanel({ rendermime, clipboard, renderer: defaultCodeMirrorRenderer });
         let model = new NotebookModel();
         let context = new MockContext<NotebookModel>(model);
         panel.context = context;
@@ -282,7 +290,7 @@ describe('notebook/notebook/panel', () => {
       });
 
       it('should emit the `contextChanged` signal', () => {
-        let panel = new NotebookPanel({ rendermime, clipboard });
+        let panel = new NotebookPanel({ rendermime, clipboard, renderer: defaultCodeMirrorRenderer });
         let called = false;
         let model = new NotebookModel();
         let context = new MockContext<NotebookModel>(model);
@@ -296,7 +304,7 @@ describe('notebook/notebook/panel', () => {
     describe('#dispose()', () => {
 
       it('should dispose of the resources used by the widget', () => {
-        let panel = new NotebookPanel({ rendermime, clipboard });
+        let panel = new NotebookPanel({ rendermime, clipboard, renderer: defaultCodeMirrorRenderer });
         let model = new NotebookModel();
         let context = new MockContext<NotebookModel>(model);
         panel.context = context;
@@ -305,7 +313,7 @@ describe('notebook/notebook/panel', () => {
       });
 
       it('should be safe to call more than once', () => {
-        let panel = new NotebookPanel({ rendermime, clipboard });
+        let panel = new NotebookPanel({ rendermime, clipboard, renderer: defaultCodeMirrorRenderer });
         panel.dispose();
         panel.dispose();
         expect(panel.isDisposed).to.be(true);
@@ -316,7 +324,7 @@ describe('notebook/notebook/panel', () => {
     describe('#onContextChanged()', () => {
 
       it('should be called when the context changes', () => {
-        let panel = new LogNotebookPanel({ rendermime, clipboard });
+        let panel = new LogNotebookPanel({ rendermime, clipboard, renderer: defaultCodeMirrorRenderer });
         let model = new NotebookModel();
         let context = new MockContext<NotebookModel>(model);
         panel.methods = [];
@@ -329,7 +337,7 @@ describe('notebook/notebook/panel', () => {
     describe('#onPopulated()', () => {
 
       it('should initialize the model state', () => {
-        let panel = new LogNotebookPanel({ rendermime, clipboard });
+        let panel = new LogNotebookPanel({ rendermime, clipboard, renderer: defaultCodeMirrorRenderer });
         let model = new NotebookModel();
         model.fromJSON(DEFAULT_CONTENT);
         expect(model.cells.canUndo).to.be(true);
@@ -370,7 +378,7 @@ describe('notebook/notebook/panel', () => {
       });
 
       it('should be called when the context changes', () => {
-        let panel = new LogNotebookPanel({ rendermime, clipboard });
+        let panel = new LogNotebookPanel({ rendermime, clipboard, renderer: defaultCodeMirrorRenderer });
         let model = new NotebookModel();
         let context = new MockContext<NotebookModel>(model);
         panel.methods = [];
@@ -393,8 +401,8 @@ describe('notebook/notebook/panel', () => {
       describe('#createContent()', () => {
 
         it('should create a notebook widget', () => {
-          let renderer = new NotebookPanel.Renderer();
-          expect(renderer.createContent({ rendermime })).to.be.a(Notebook);
+          let renderer = new CodeMirrorRenderer();
+          expect(renderer.createContent(rendermime)).to.be.a(Notebook);
         });
 
       });
@@ -402,7 +410,7 @@ describe('notebook/notebook/panel', () => {
       describe('#createToolbar()', () => {
 
         it('should create a notebook toolbar', () => {
-          let renderer = new NotebookPanel.Renderer();
+          let renderer = new CodeMirrorRenderer();
           expect(renderer.createToolbar()).to.be.a(NotebookToolbar);
         });
 
@@ -411,7 +419,7 @@ describe('notebook/notebook/panel', () => {
       describe('#createCompletion()', () => {
 
         it('should create a completion widget', () => {
-          let renderer = new NotebookPanel.Renderer();
+          let renderer = new CodeMirrorRenderer();
           expect(renderer.createCompletion()).to.be.a(CompletionWidget);
         });
 
@@ -422,7 +430,7 @@ describe('notebook/notebook/panel', () => {
     describe('.defaultRenderer', () => {
 
       it('should be an instance of a `Renderer`', () => {
-        expect(NotebookPanel.defaultRenderer).to.be.a(NotebookPanel.Renderer);
+        expect(defaultCodeMirrorRenderer).to.be.a(NotebookPanel.Renderer);
       });
 
     });

+ 30 - 26
test/src/notebook/notebook/widget.spec.ts

@@ -40,13 +40,17 @@ import {
   DEFAULT_CONTENT
 } from '../utils';
 
+import {
+  defaultCodeMirrorRenderer, CodeMirrorRenderer
+} from '../../../../lib/notebook/codemirror/notebook/widget';
+
 
 const rendermime = defaultRenderMime();
 
 
 function createWidget(): LogStaticNotebook {
   let model = new NotebookModel();
-  let widget = new LogStaticNotebook({ rendermime });
+  let widget = new LogStaticNotebook({ rendermime, renderer: defaultCodeMirrorRenderer });
   widget.model = model;
   return widget;
 }
@@ -133,7 +137,7 @@ class LogNotebook extends Notebook {
 
 function createActiveWidget(): LogNotebook {
   let model = new NotebookModel();
-  let widget = new LogNotebook({ rendermime });
+  let widget = new LogNotebook({ rendermime, renderer: defaultCodeMirrorRenderer });
   widget.model = model;
   return widget;
 }
@@ -146,17 +150,17 @@ describe('notebook/notebook/widget', () => {
     describe('#constructor()', () => {
 
       it('should create a notebook widget', () => {
-        let widget = new StaticNotebook({ rendermime });
+        let widget = new StaticNotebook({ rendermime, renderer: defaultCodeMirrorRenderer });
         expect(widget).to.be.a(StaticNotebook);
       });
 
       it('should add the `jp-Notebook` class', () => {
-        let widget = new StaticNotebook({ rendermime });
+        let widget = new StaticNotebook({ rendermime, renderer: defaultCodeMirrorRenderer });
         expect(widget.hasClass('jp-Notebook')).to.be(true);
       });
 
       it('should accept an optional render', () => {
-        let renderer = new StaticNotebook.Renderer();
+        let renderer = new CodeMirrorRenderer();
         let widget = new StaticNotebook({ rendermime, renderer });
         expect(widget.renderer).to.be(renderer);
       });
@@ -166,7 +170,7 @@ describe('notebook/notebook/widget', () => {
     describe('#modelChanged', () => {
 
       it('should be emitted when the model changes', () => {
-        let widget = new StaticNotebook({ rendermime: defaultRenderMime() });
+        let widget = new StaticNotebook({ rendermime: defaultRenderMime(), renderer: defaultCodeMirrorRenderer });
         let model = new NotebookModel();
         let called = false;
         widget.modelChanged.connect((sender, args) => {
@@ -183,7 +187,7 @@ describe('notebook/notebook/widget', () => {
     describe('#modelContentChanged', () => {
 
       it('should be emitted when a cell is added', () => {
-        let widget = new StaticNotebook({ rendermime: defaultRenderMime() });
+        let widget = new StaticNotebook({ rendermime: defaultRenderMime(), renderer: defaultCodeMirrorRenderer });
         widget.model = new NotebookModel();
         let called = false;
         widget.modelContentChanged.connect(() => { called = true; });
@@ -193,7 +197,7 @@ describe('notebook/notebook/widget', () => {
       });
 
       it('should be emitted when metadata is set', () => {
-        let widget = new StaticNotebook({ rendermime: defaultRenderMime() });
+        let widget = new StaticNotebook({ rendermime: defaultRenderMime(), renderer: defaultCodeMirrorRenderer });
         widget.model = new NotebookModel();
         let called = false;
         widget.modelContentChanged.connect(() => { called = true; });
@@ -207,19 +211,19 @@ describe('notebook/notebook/widget', () => {
     describe('#model', () => {
 
       it('should get the model for the widget', () => {
-        let widget = new StaticNotebook({ rendermime: defaultRenderMime() });
+        let widget = new StaticNotebook({ rendermime: defaultRenderMime(), renderer: defaultCodeMirrorRenderer });
         expect(widget.model).to.be(null);
       });
 
       it('should set the model for the widget', () => {
-        let widget = new StaticNotebook({ rendermime: defaultRenderMime() });
+        let widget = new StaticNotebook({ rendermime: defaultRenderMime(), renderer: defaultCodeMirrorRenderer });
         let model = new NotebookModel();
         widget.model = model;
         expect(widget.model).to.be(model);
       });
 
       it('should emit the `modelChanged` signal', () => {
-        let widget = new StaticNotebook({ rendermime: defaultRenderMime() });
+        let widget = new StaticNotebook({ rendermime: defaultRenderMime(), renderer: defaultCodeMirrorRenderer });
         let model = new NotebookModel();
         widget.model = model;
         let called = false;
@@ -229,7 +233,7 @@ describe('notebook/notebook/widget', () => {
       });
 
       it('should be a no-op if the value does not change', () => {
-        let widget = new StaticNotebook({ rendermime: defaultRenderMime() });
+        let widget = new StaticNotebook({ rendermime: defaultRenderMime(), renderer: defaultCodeMirrorRenderer });
         let model = new NotebookModel();
         widget.model = model;
         let called = false;
@@ -239,7 +243,7 @@ describe('notebook/notebook/widget', () => {
       });
 
       it('should add the model cells to the layout', () => {
-        let widget = new LogStaticNotebook({ rendermime: defaultRenderMime() });
+        let widget = new LogStaticNotebook({ rendermime: defaultRenderMime(), renderer: defaultCodeMirrorRenderer });
         let model = new NotebookModel();
         model.fromJSON(DEFAULT_CONTENT);
         widget.model = model;
@@ -247,7 +251,7 @@ describe('notebook/notebook/widget', () => {
       });
 
       it('should set the mime types of the cell widgets', () => {
-        let widget = new LogStaticNotebook({ rendermime: defaultRenderMime() });
+        let widget = new LogStaticNotebook({ rendermime: defaultRenderMime(), renderer: defaultCodeMirrorRenderer });
         let model = new NotebookModel();
         let cursor = model.getMetadata('language_info');
         cursor.setValue({ name: 'python', codemirror_mode: 'python' });
@@ -311,7 +315,7 @@ describe('notebook/notebook/widget', () => {
     describe('#rendermime', () => {
 
       it('should be the rendermime instance used by the widget', () => {
-        let widget = new StaticNotebook({ rendermime });
+        let widget = new StaticNotebook({ rendermime, renderer: defaultCodeMirrorRenderer });
         expect(widget.rendermime).to.be(rendermime);
       });
 
@@ -325,8 +329,8 @@ describe('notebook/notebook/widget', () => {
     describe('#renderer', () => {
 
       it('should be the cell widget renderer used by the widget', () => {
-        let widget = new StaticNotebook({ rendermime });
-        expect(widget.renderer).to.be(StaticNotebook.defaultRenderer);
+        let widget = new StaticNotebook({ rendermime, renderer: defaultCodeMirrorRenderer });
+        expect(widget.renderer).to.be(defaultCodeMirrorRenderer);
       });
 
       it('should be read-only', () => {
@@ -339,12 +343,12 @@ describe('notebook/notebook/widget', () => {
     describe('#codeMimetype', () => {
 
       it('should get the mime type for code cells', () => {
-        let widget = new StaticNotebook({ rendermime });
+        let widget = new StaticNotebook({ rendermime, renderer: defaultCodeMirrorRenderer });
         expect(widget.codeMimetype).to.be('text/plain');
       });
 
       it('should be set from language metadata', () => {
-        let widget = new LogStaticNotebook({ rendermime: defaultRenderMime() });
+        let widget = new LogStaticNotebook({ rendermime: defaultRenderMime(), renderer: defaultCodeMirrorRenderer });
         let model = new NotebookModel();
         let cursor = model.getMetadata('language_info');
         cursor.setValue({ name: 'python', codemirror_mode: 'python' });
@@ -404,7 +408,7 @@ describe('notebook/notebook/widget', () => {
     describe('#onModelChanged()', () => {
 
       it('should be called when the model changes', () => {
-        let widget = new LogStaticNotebook({ rendermime });
+        let widget = new LogStaticNotebook({ rendermime, renderer: defaultCodeMirrorRenderer });
         widget.model = new NotebookModel();
         expect(widget.methods).to.contain('onModelChanged');
       });
@@ -483,7 +487,7 @@ describe('notebook/notebook/widget', () => {
       describe('#createCodeCell()', () => {
 
         it('should create a `CodeCellWidget`', () => {
-          let renderer = new StaticNotebook.Renderer();
+          let renderer = new CodeMirrorRenderer();
           let model = new CodeCellModel();
           let widget = renderer.createCodeCell(model, rendermime);
           expect(widget).to.be.a(CodeCellWidget);
@@ -494,7 +498,7 @@ describe('notebook/notebook/widget', () => {
       describe('#createMarkdownCell()', () => {
 
         it('should create a `MarkdownCellWidget`', () => {
-          let renderer = new StaticNotebook.Renderer();
+          let renderer = new CodeMirrorRenderer();
           let model = new MarkdownCellModel();
           let widget = renderer.createMarkdownCell(model, rendermime);
           expect(widget).to.be.a(MarkdownCellWidget);
@@ -505,7 +509,7 @@ describe('notebook/notebook/widget', () => {
       describe('#createRawCell()', () => {
 
         it('should create a `RawCellWidget`', () => {
-          let renderer = new StaticNotebook.Renderer();
+          let renderer = new CodeMirrorRenderer();
           let model = new RawCellModel();
           let widget = renderer.createRawCell(model);
           expect(widget).to.be.a(RawCellWidget);
@@ -516,7 +520,7 @@ describe('notebook/notebook/widget', () => {
       describe('#updateCell()', () => {
 
         it('should be a no-op', () => {
-          let renderer = new StaticNotebook.Renderer();
+          let renderer = new CodeMirrorRenderer();
           let model = new CodeCellModel();
           let widget = renderer.createCodeCell(model, rendermime);
           renderer.updateCell(widget);
@@ -528,7 +532,7 @@ describe('notebook/notebook/widget', () => {
       describe('#getCodeMimetype()', () => {
 
         it('should get the preferred mime for code cells in the notebook', () => {
-          let renderer = new StaticNotebook.Renderer();
+          let renderer = new CodeMirrorRenderer();
           let model = new NotebookModel();
           let cursor = model.getMetadata('language_info');
           cursor.setValue({ name: 'python', mimetype: 'text/x-python' });
@@ -542,7 +546,7 @@ describe('notebook/notebook/widget', () => {
     describe('.defaultRenderer', () => {
 
       it('should be an instance of `StaticNotebook.Renderer', () => {
-        expect(StaticNotebook.defaultRenderer).to.be.a(StaticNotebook.Renderer);
+        expect(defaultCodeMirrorRenderer).to.be.a(StaticNotebook.Renderer);
       });
 
     });

+ 15 - 11
test/src/notebook/notebook/widgetfactory.spec.ts

@@ -27,6 +27,10 @@ import {
   defaultRenderMime
 } from '../../rendermime/rendermime.spec';
 
+import {
+  defaultCodeMirrorRenderer, CodeMirrorRenderer
+} from '../../../../lib/notebook/codemirror/notebook/panel';
+
 
 const rendermime = defaultRenderMime();
 const clipboard = new MimeData();
@@ -39,7 +43,7 @@ describe('notebook/notebook/widgetfactory', () => {
     describe('#constructor()', () => {
 
       it('should create a notebook widget factory', () => {
-        let factory = new NotebookWidgetFactory(rendermime, clipboard);
+        let factory = new NotebookWidgetFactory(rendermime, clipboard, defaultCodeMirrorRenderer);
         expect(factory).to.be.a(NotebookWidgetFactory);
       });
 
@@ -48,14 +52,14 @@ describe('notebook/notebook/widgetfactory', () => {
     describe('#isDisposed', () => {
 
       it('should get whether the factory has been disposed', () => {
-        let factory = new NotebookWidgetFactory(rendermime, clipboard);
+        let factory = new NotebookWidgetFactory(rendermime, clipboard, defaultCodeMirrorRenderer);
         expect(factory.isDisposed).to.be(false);
         factory.dispose();
         expect(factory.isDisposed).to.be(true);
       });
 
       it('should be read-only', () => {
-        let factory = new NotebookWidgetFactory(rendermime, clipboard);
+        let factory = new NotebookWidgetFactory(rendermime, clipboard, defaultCodeMirrorRenderer);
         expect(() => { factory.isDisposed = false; }).to.throwError();
       });
 
@@ -64,13 +68,13 @@ describe('notebook/notebook/widgetfactory', () => {
     describe('#dispose()', () => {
 
       it('should dispose of the resources held by the factory', () => {
-        let factory = new NotebookWidgetFactory(rendermime, clipboard);
+        let factory = new NotebookWidgetFactory(rendermime, clipboard, defaultCodeMirrorRenderer);
         factory.dispose();
         expect(factory.isDisposed).to.be(true);
       });
 
       it('should be safe to call multiple times', () => {
-        let factory = new NotebookWidgetFactory(rendermime, clipboard);
+        let factory = new NotebookWidgetFactory(rendermime, clipboard, defaultCodeMirrorRenderer);
         factory.dispose();
         factory.dispose();
         expect(factory.isDisposed).to.be(true);
@@ -83,7 +87,7 @@ describe('notebook/notebook/widgetfactory', () => {
       it('should create a new `NotebookPanel` widget', () => {
         let model = new NotebookModel();
         let context = new MockContext<NotebookModel>(model);
-        let factory = new NotebookWidgetFactory(rendermime, clipboard);
+        let factory = new NotebookWidgetFactory(rendermime, clipboard, defaultCodeMirrorRenderer);
         let panel = factory.createNew(context);
         expect(panel).to.be.a(NotebookPanel);
       });
@@ -91,7 +95,7 @@ describe('notebook/notebook/widgetfactory', () => {
       it('should create a clone of the rendermime', () => {
         let model = new NotebookModel();
         let context = new MockContext<NotebookModel>(model);
-        let factory = new NotebookWidgetFactory(rendermime, clipboard);
+        let factory = new NotebookWidgetFactory(rendermime, clipboard, defaultCodeMirrorRenderer);
         let panel = factory.createNew(context);
         expect(panel.rendermime).to.not.be(rendermime);
       });
@@ -99,7 +103,7 @@ describe('notebook/notebook/widgetfactory', () => {
       it('should start a kernel if one is given', () => {
         let model = new NotebookModel();
         let context = new MockContext<NotebookModel>(model);
-        let factory = new NotebookWidgetFactory(rendermime, clipboard);
+        let factory = new NotebookWidgetFactory(rendermime, clipboard, defaultCodeMirrorRenderer);
         let panel = factory.createNew(context, { name: 'shell' });
         expect(panel.context.kernel.name).to.be('shell');
       });
@@ -107,7 +111,7 @@ describe('notebook/notebook/widgetfactory', () => {
       it('should start a kernel given the default kernel language', () => {
         let model = new NotebookModel();
         let context = new MockContext<NotebookModel>(model);
-        let factory = new NotebookWidgetFactory(rendermime, clipboard);
+        let factory = new NotebookWidgetFactory(rendermime, clipboard, defaultCodeMirrorRenderer);
         let panel = factory.createNew(context);
         expect(panel.context.kernel.name).to.be('python');
       });
@@ -117,7 +121,7 @@ describe('notebook/notebook/widgetfactory', () => {
         let cursor = model.getMetadata('language_info');
         cursor.setValue({ name: 'shell' });
         let context = new MockContext<NotebookModel>(model);
-        let factory = new NotebookWidgetFactory(rendermime, clipboard);
+        let factory = new NotebookWidgetFactory(rendermime, clipboard, defaultCodeMirrorRenderer);
         let panel = factory.createNew(context);
         expect(panel.context.kernel.name).to.be('shell');
       });
@@ -125,7 +129,7 @@ describe('notebook/notebook/widgetfactory', () => {
       it('should populate the default toolbar items', () => {
         let model = new NotebookModel();
         let context = new MockContext<NotebookModel>(model);
-        let factory = new NotebookWidgetFactory(rendermime, clipboard);
+        let factory = new NotebookWidgetFactory(rendermime, clipboard, defaultCodeMirrorRenderer);
         let panel = factory.createNew(context);
         let items = panel.toolbar.list();
         expect(items).to.contain('save');