mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-16 18:46:40 -05:00
Notebook Cell Conversion Language Fixes (#14120)
* Cell language override fixes * PR feedback
This commit is contained in:
@@ -44,12 +44,11 @@ let expectedNotebookContent: nb.INotebookContents = {
|
|||||||
cells: [{
|
cells: [{
|
||||||
cell_type: CellTypes.Code,
|
cell_type: CellTypes.Code,
|
||||||
source: ['insert into t1 values (c1, c2)'],
|
source: ['insert into t1 values (c1, c2)'],
|
||||||
metadata: { language: 'python' },
|
metadata: { language: 'sql' },
|
||||||
execution_count: 1
|
execution_count: 1
|
||||||
}, {
|
}, {
|
||||||
cell_type: CellTypes.Markdown,
|
cell_type: CellTypes.Markdown,
|
||||||
source: ['I am *markdown*'],
|
source: ['I am *markdown*'],
|
||||||
metadata: { language: 'python' },
|
|
||||||
execution_count: 1
|
execution_count: 1
|
||||||
}],
|
}],
|
||||||
metadata: {
|
metadata: {
|
||||||
@@ -57,6 +56,9 @@ let expectedNotebookContent: nb.INotebookContents = {
|
|||||||
name: 'mssql',
|
name: 'mssql',
|
||||||
language: 'sql',
|
language: 'sql',
|
||||||
display_name: 'SQL'
|
display_name: 'SQL'
|
||||||
|
},
|
||||||
|
language_info: {
|
||||||
|
name: 'sql'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
nbformat: 4,
|
nbformat: 4,
|
||||||
@@ -544,6 +546,34 @@ suite('notebook model', function (): void {
|
|||||||
assert.equal(notebookContentChange.changeType, NotebookChangeType.CellMetadataUpdated, 'notebookContentChange changeType should indicate ');
|
assert.equal(notebookContentChange.changeType, NotebookChangeType.CellMetadataUpdated, 'notebookContentChange changeType should indicate ');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('Should set cell language correctly after cell type conversion', async function (): Promise<void> {
|
||||||
|
let mockContentManager = TypeMoq.Mock.ofType(NotebookEditorContentManager);
|
||||||
|
mockContentManager.setup(c => c.loadContent()).returns(() => Promise.resolve(expectedNotebookContent));
|
||||||
|
defaultModelOptions.contentManager = mockContentManager.object;
|
||||||
|
|
||||||
|
let model = new NotebookModel(defaultModelOptions, undefined, logService, undefined, new NullAdsTelemetryService(), queryConnectionService.object, configurationService);
|
||||||
|
await model.loadContents();
|
||||||
|
|
||||||
|
let newCell: ICellModel;
|
||||||
|
model.onCellTypeChanged(c => newCell = c);
|
||||||
|
|
||||||
|
let firstCell = model.cells[0];
|
||||||
|
let secondCell = model.cells[1];
|
||||||
|
|
||||||
|
assert.equal(firstCell.cellType, CellTypes.Code, 'Initial cell type for first cell should be code');
|
||||||
|
assert.equal(firstCell.language, 'sql', 'Initial language should be sql for first cell');
|
||||||
|
|
||||||
|
model.convertCellType(firstCell);
|
||||||
|
assert.equal(firstCell.cellType, CellTypes.Markdown, 'Failed to convert cell type after conversion');
|
||||||
|
assert.equal(firstCell.language, 'markdown', 'Language should be markdown for text cells');
|
||||||
|
assert.deepEqual(newCell, firstCell);
|
||||||
|
|
||||||
|
model.convertCellType(secondCell);
|
||||||
|
assert.equal(secondCell.cellType, CellTypes.Code, 'Failed to convert second cell type');
|
||||||
|
assert.equal(secondCell.language, 'sql', 'Language should be sql again for second cell');
|
||||||
|
assert.deepEqual(newCell, secondCell);
|
||||||
|
});
|
||||||
|
|
||||||
test('Should load contents but then go to error state if client session startup fails', async function (): Promise<void> {
|
test('Should load contents but then go to error state if client session startup fails', async function (): Promise<void> {
|
||||||
let mockContentManager = TypeMoq.Mock.ofType(NotebookEditorContentManager);
|
let mockContentManager = TypeMoq.Mock.ofType(NotebookEditorContentManager);
|
||||||
mockContentManager.setup(c => c.loadContent()).returns(() => Promise.resolve(expectedNotebookContentOneCell));
|
mockContentManager.setup(c => c.loadContent()).returns(() => Promise.resolve(expectedNotebookContentOneCell));
|
||||||
|
|||||||
@@ -581,6 +581,8 @@ export class NotebookModel extends Disposable implements INotebookModel {
|
|||||||
if (cell) {
|
if (cell) {
|
||||||
let index = this.findCellIndex(cell);
|
let index = this.findCellIndex(cell);
|
||||||
if (index > -1) {
|
if (index > -1) {
|
||||||
|
// Ensure override language is reset
|
||||||
|
cell.setOverrideLanguage('');
|
||||||
cell.cellType = cell.cellType === CellTypes.Markdown ? CellTypes.Code : CellTypes.Markdown;
|
cell.cellType = cell.cellType === CellTypes.Markdown ? CellTypes.Code : CellTypes.Markdown;
|
||||||
this._onCellTypeChanged.fire(cell);
|
this._onCellTypeChanged.fire(cell);
|
||||||
this._contentChangedEmitter.fire({
|
this._contentChangedEmitter.fire({
|
||||||
|
|||||||
Reference in New Issue
Block a user