mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-01-22 17:22:59 -05:00
Make various enhancements to Notebook Provider registration. (#17609)
* Use built-in SQL ExecuteProvider by default if no other provider exists. * Gracefully handle case where standardKernels are not defined for a provider. * Standardize on just using arrays for various provider registration details.
This commit is contained in:
@@ -234,12 +234,12 @@ suite.skip('NotebookService:', function (): void {
|
||||
assert.deepStrictEqual(notebookService.getProvidersForFileType('ipynb'), ['sql'], 'sql provider should be registered for ipynb extension');
|
||||
|
||||
const otherProviderRegistration: ProviderDescriptionRegistration = {
|
||||
fileExtensions: 'ipynb',
|
||||
standardKernels: {
|
||||
fileExtensions: ['ipynb'],
|
||||
standardKernels: [{
|
||||
name: 'kernel1',
|
||||
connectionProviderIds: [],
|
||||
displayName: 'Kernel 1'
|
||||
},
|
||||
}],
|
||||
provider: 'otherProvider'
|
||||
};
|
||||
|
||||
@@ -249,7 +249,7 @@ suite.skip('NotebookService:', function (): void {
|
||||
assert.deepStrictEqual(notebookService.getProvidersForFileType('ipynb'), ['sql', 'otherProvider'], 'otherProvider should also be registered for ipynb extension');
|
||||
assert.deepStrictEqual(notebookService.getSupportedFileExtensions(), ['IPYNB'], 'Only IPYNB should be registered as supported file extension');
|
||||
assert.strictEqual(notebookService.getStandardKernelsForProvider('otherProvider').length, 1, 'otherProvider kernel info could not be found');
|
||||
assert.deepStrictEqual(notebookService.getStandardKernelsForProvider('otherProvider')[0], otherProviderRegistration.standardKernels, 'otherProviderRegistration standard kernels does not match');
|
||||
assert.deepStrictEqual(notebookService.getStandardKernelsForProvider('otherProvider')[0], otherProviderRegistration.standardKernels[0], 'otherProviderRegistration standard kernels does not match');
|
||||
});
|
||||
|
||||
test('tests that dispose() method calls dispose on underlying disposable objects exactly once', async () => {
|
||||
|
||||
@@ -8,10 +8,11 @@ import * as TypeMoq from 'typemoq';
|
||||
|
||||
import { nb, ServerInfo } from 'azdata';
|
||||
import { getHostAndPortFromEndpoint, isStream, getProvidersForFileName, asyncForEach, clusterEndpointsProperty, getClusterEndpoints, RawEndpoint, IEndpoint, getStandardKernelsForProvider, IStandardKernelWithProvider, rewriteUrlUsingRegex } from 'sql/workbench/services/notebook/browser/models/notebookUtils';
|
||||
import { INotebookService, DEFAULT_NOTEBOOK_FILETYPE, DEFAULT_NOTEBOOK_PROVIDER } from 'sql/workbench/services/notebook/browser/notebookService';
|
||||
import { INotebookService, DEFAULT_NOTEBOOK_FILETYPE, DEFAULT_NOTEBOOK_PROVIDER, SQL_NOTEBOOK_PROVIDER } from 'sql/workbench/services/notebook/browser/notebookService';
|
||||
import { NotebookServiceStub } from 'sql/workbench/contrib/notebook/test/stubs';
|
||||
import { tryMatchCellMagic, extractCellMagicCommandPlusArgs } from 'sql/workbench/services/notebook/browser/utils';
|
||||
import { RichTextEditStack } from 'sql/workbench/contrib/notebook/browser/cellViews/textCell.component';
|
||||
import { notebookConstants } from 'sql/workbench/services/notebook/browser/interfaces';
|
||||
|
||||
suite('notebookUtils', function (): void {
|
||||
const mockNotebookService = TypeMoq.Mock.ofType<INotebookService>(NotebookServiceStub);
|
||||
@@ -22,6 +23,11 @@ suite('notebookUtils', function (): void {
|
||||
displayName: 'testDisplayName',
|
||||
connectionProviderIds: ['testId1', 'testId2']
|
||||
};
|
||||
const sqlStandardKernel: nb.IStandardKernel = {
|
||||
name: notebookConstants.SQL,
|
||||
displayName: notebookConstants.SQL,
|
||||
connectionProviderIds: [notebookConstants.SQL_CONNECTION_PROVIDER]
|
||||
};
|
||||
|
||||
function setupMockNotebookService() {
|
||||
mockNotebookService.setup(n => n.getProvidersForFileType(TypeMoq.It.isAnyString()))
|
||||
@@ -34,10 +40,17 @@ suite('notebookUtils', function (): void {
|
||||
});
|
||||
|
||||
// getStandardKernelsForProvider
|
||||
mockNotebookService.setup(n => n.getStandardKernelsForProvider(TypeMoq.It.isAnyString()))
|
||||
.returns((provider) => {
|
||||
let returnHandler = (provider) => {
|
||||
if (provider === testProvider) {
|
||||
return [testKernel];
|
||||
});
|
||||
} else if (provider === SQL_NOTEBOOK_PROVIDER) {
|
||||
return [sqlStandardKernel];
|
||||
} else {
|
||||
return undefined;
|
||||
}
|
||||
};
|
||||
mockNotebookService.setup(n => n.getStandardKernelsForProvider(TypeMoq.It.isAnyString())).returns(returnHandler);
|
||||
mockNotebookService.setup(n => n.getStandardKernelsForProvider(TypeMoq.It.isAnyString())).returns(returnHandler);
|
||||
}
|
||||
|
||||
test('isStream Test', async function (): Promise<void> {
|
||||
@@ -87,6 +100,9 @@ suite('notebookUtils', function (): void {
|
||||
result = getStandardKernelsForProvider('testProvider', undefined);
|
||||
assert.deepStrictEqual(result, []);
|
||||
|
||||
result = getStandardKernelsForProvider('NotARealProvider', mockNotebookService.object);
|
||||
assert.deepStrictEqual(result, [Object.assign({ notebookProvider: 'NotARealProvider' }, sqlStandardKernel)]);
|
||||
|
||||
result = getStandardKernelsForProvider('testProvider', mockNotebookService.object);
|
||||
assert.deepStrictEqual(result, [<IStandardKernelWithProvider>{
|
||||
name: 'testName',
|
||||
|
||||
Reference in New Issue
Block a user