11import { expect } from 'chai' ;
22import { anything , verify , when } from 'ts-mockito' ;
3- import { Disposable , NotebookCell , NotebookCellKind , NotebookDocument , TextDocument , Uri } from 'vscode' ;
3+ import { Disposable , NotebookCellKind , TextDocument } from 'vscode' ;
44
55import { IDisposableRegistry } from '../../platform/common/types' ;
66import { mockedVSCodeNamespaces , resetVSCodeMocks } from '../../test/vscode-mock' ;
7+ import { createMockCell , createMockNotebook } from './deepnoteTestHelpers' ;
78import { DeepnoteNewCellLanguageService } from './deepnoteNewCellLanguageService' ;
89
910suite ( 'DeepnoteNewCellLanguageService' , ( ) => {
1011 let service : DeepnoteNewCellLanguageService ;
1112 let disposables : Disposable [ ] ;
1213 let notebookChangeHandler : ( ( e : any ) => void ) | undefined ;
1314
14- function createMockNotebook ( notebookType : string ) : NotebookDocument {
15- return {
16- uri : Uri . file ( '/test/notebook.deepnote' ) ,
17- notebookType
18- } as NotebookDocument ;
19- }
20-
21- function createMockCell ( options : {
22- kind ?: NotebookCellKind ;
23- languageId ?: string ;
24- content ?: string ;
25- metadata ?: Record < string , unknown > ;
26- } ) : NotebookCell {
27- const { kind = NotebookCellKind . Code , languageId = 'python' , content = '' , metadata = { } } = options ;
28-
29- return {
30- index : 0 ,
31- notebook : createMockNotebook ( 'deepnote' ) ,
32- kind,
33- document : {
34- uri : Uri . file ( '/test/notebook.deepnote#cell0' ) ,
35- languageId,
36- getText : ( ) => content
37- } as TextDocument ,
38- metadata,
39- outputs : [ ] ,
40- executionSummary : undefined
41- } as unknown as NotebookCell ;
42- }
43-
4415 setup ( ( ) => {
4516 resetVSCodeMocks ( ) ;
4617 disposables = [ ] ;
@@ -79,7 +50,7 @@ suite('DeepnoteNewCellLanguageService', () => {
7950
8051 test ( 'ignores non-deepnote notebooks' , async ( ) => {
8152 service . activate ( ) ;
82- const jupyterNotebook = createMockNotebook ( 'jupyter-notebook' ) ;
53+ const jupyterNotebook = createMockNotebook ( { notebookType : 'jupyter-notebook' } ) ;
8354 const cell = createMockCell ( { languageId : 'sql' } ) ;
8455
8556 notebookChangeHandler ! ( {
@@ -93,7 +64,7 @@ suite('DeepnoteNewCellLanguageService', () => {
9364
9465 test ( 'ignores markdown cells' , async ( ) => {
9566 service . activate ( ) ;
96- const notebook = createMockNotebook ( 'deepnote' ) ;
67+ const notebook = createMockNotebook ( { notebookType : 'deepnote' } ) ;
9768 const cell = createMockCell ( { kind : NotebookCellKind . Markup , languageId : 'markdown' } ) ;
9869
9970 notebookChangeHandler ! ( {
@@ -107,8 +78,8 @@ suite('DeepnoteNewCellLanguageService', () => {
10778
10879 test ( 'ignores cells with content' , async ( ) => {
10980 service . activate ( ) ;
110- const notebook = createMockNotebook ( 'deepnote' ) ;
111- const cell = createMockCell ( { languageId : 'sql' , content : 'SELECT * FROM table' } ) ;
81+ const notebook = createMockNotebook ( { notebookType : 'deepnote' } ) ;
82+ const cell = createMockCell ( { languageId : 'sql' , text : 'SELECT * FROM table' } ) ;
11283
11384 notebookChangeHandler ! ( {
11485 notebook,
@@ -121,7 +92,7 @@ suite('DeepnoteNewCellLanguageService', () => {
12192
12293 test ( 'ignores cells that already have Python language' , async ( ) => {
12394 service . activate ( ) ;
124- const notebook = createMockNotebook ( 'deepnote' ) ;
95+ const notebook = createMockNotebook ( { notebookType : 'deepnote' } ) ;
12596 const cell = createMockCell ( { languageId : 'python' } ) ;
12697
12798 notebookChangeHandler ! ( {
@@ -135,7 +106,7 @@ suite('DeepnoteNewCellLanguageService', () => {
135106
136107 test ( 'ignores intentional SQL blocks (with __deepnotePocket.type)' , async ( ) => {
137108 service . activate ( ) ;
138- const notebook = createMockNotebook ( 'deepnote' ) ;
109+ const notebook = createMockNotebook ( { notebookType : 'deepnote' } ) ;
139110 const cell = createMockCell ( {
140111 languageId : 'sql' ,
141112 metadata : { __deepnotePocket : { type : 'sql' } }
@@ -152,7 +123,7 @@ suite('DeepnoteNewCellLanguageService', () => {
152123
153124 test ( 'ignores intentional chart blocks (with __deepnotePocket.type)' , async ( ) => {
154125 service . activate ( ) ;
155- const notebook = createMockNotebook ( 'deepnote' ) ;
126+ const notebook = createMockNotebook ( { notebookType : 'deepnote' } ) ;
156127 const cell = createMockCell ( {
157128 languageId : 'json' ,
158129 metadata : { __deepnotePocket : { type : 'chart-vega' } }
@@ -169,7 +140,7 @@ suite('DeepnoteNewCellLanguageService', () => {
169140
170141 test ( 'ignores intentional input blocks (with __deepnotePocket.type)' , async ( ) => {
171142 service . activate ( ) ;
172- const notebook = createMockNotebook ( 'deepnote' ) ;
143+ const notebook = createMockNotebook ( { notebookType : 'deepnote' } ) ;
173144 const cell = createMockCell ( {
174145 languageId : 'plaintext' ,
175146 metadata : { __deepnotePocket : { type : 'input-text' } }
@@ -186,7 +157,7 @@ suite('DeepnoteNewCellLanguageService', () => {
186157
187158 test ( 'changes SQL cell to Python when no __deepnotePocket metadata' , async ( ) => {
188159 service . activate ( ) ;
189- const notebook = createMockNotebook ( 'deepnote' ) ;
160+ const notebook = createMockNotebook ( { notebookType : 'deepnote' } ) ;
190161 const cell = createMockCell ( { languageId : 'sql' } ) ;
191162
192163 notebookChangeHandler ! ( {
@@ -200,7 +171,7 @@ suite('DeepnoteNewCellLanguageService', () => {
200171
201172 test ( 'changes JSON cell to Python when no __deepnotePocket metadata' , async ( ) => {
202173 service . activate ( ) ;
203- const notebook = createMockNotebook ( 'deepnote' ) ;
174+ const notebook = createMockNotebook ( { notebookType : 'deepnote' } ) ;
204175 const cell = createMockCell ( { languageId : 'json' } ) ;
205176
206177 notebookChangeHandler ! ( {
@@ -214,7 +185,7 @@ suite('DeepnoteNewCellLanguageService', () => {
214185
215186 test ( 'handles multiple added cells' , async ( ) => {
216187 service . activate ( ) ;
217- const notebook = createMockNotebook ( 'deepnote' ) ;
188+ const notebook = createMockNotebook ( { notebookType : 'deepnote' } ) ;
218189 const sqlCell = createMockCell ( { languageId : 'sql' } ) ;
219190 const pythonCell = createMockCell ( { languageId : 'python' } ) ;
220191 const jsonCell = createMockCell ( { languageId : 'json' } ) ;
@@ -232,7 +203,7 @@ suite('DeepnoteNewCellLanguageService', () => {
232203
233204 test ( 'handles multiple content changes' , async ( ) => {
234205 service . activate ( ) ;
235- const notebook = createMockNotebook ( 'deepnote' ) ;
206+ const notebook = createMockNotebook ( { notebookType : 'deepnote' } ) ;
236207 const cell1 = createMockCell ( { languageId : 'sql' } ) ;
237208 const cell2 = createMockCell ( { languageId : 'javascript' } ) ;
238209
@@ -248,7 +219,7 @@ suite('DeepnoteNewCellLanguageService', () => {
248219
249220 test ( 'ignores content changes with no added cells' , async ( ) => {
250221 service . activate ( ) ;
251- const notebook = createMockNotebook ( 'deepnote' ) ;
222+ const notebook = createMockNotebook ( { notebookType : 'deepnote' } ) ;
252223
253224 notebookChangeHandler ! ( {
254225 notebook,
@@ -261,8 +232,8 @@ suite('DeepnoteNewCellLanguageService', () => {
261232
262233 test ( 'changes cells with whitespace-only content to Python' , async ( ) => {
263234 service . activate ( ) ;
264- const notebook = createMockNotebook ( 'deepnote' ) ;
265- const cell = createMockCell ( { languageId : 'sql' , content : ' \n\t ' } ) ;
235+ const notebook = createMockNotebook ( { notebookType : 'deepnote' } ) ;
236+ const cell = createMockCell ( { languageId : 'sql' , text : ' \n\t ' } ) ;
266237
267238 notebookChangeHandler ! ( {
268239 notebook,
0 commit comments