From fb1fbb214d0e9fce5220823a35f034283b0df523 Mon Sep 17 00:00:00 2001 From: Chris LaFreniere <40371649+chlafreniere@users.noreply.github.com> Date: Tue, 28 Apr 2020 16:18:55 -0700 Subject: [PATCH] Notebook Cell Magic Mapper Tests (#10172) * cell magic mapper tests * Add space in description for test --- .../browser/models/cellMagicMapper.ts | 3 +- .../test/browser/cellMagicMapper.test.ts | 97 +++++++++++++++++++ 2 files changed, 99 insertions(+), 1 deletion(-) create mode 100644 src/sql/workbench/contrib/notebook/test/browser/cellMagicMapper.test.ts diff --git a/src/sql/workbench/contrib/notebook/browser/models/cellMagicMapper.ts b/src/sql/workbench/contrib/notebook/browser/models/cellMagicMapper.ts index c3425890ee..80c8fa23b6 100644 --- a/src/sql/workbench/contrib/notebook/browser/models/cellMagicMapper.ts +++ b/src/sql/workbench/contrib/notebook/browser/models/cellMagicMapper.ts @@ -36,6 +36,7 @@ export class CellMagicMapper implements ICellMagicMapper { if (kernelId === undefined || !searchText) { return undefined; } + kernelId = kernelId.toLowerCase(); searchText = searchText.toLowerCase(); let kernelMagics = this.kernelToMagicMap.get(kernelId) || []; if (kernelMagics) { @@ -45,7 +46,7 @@ export class CellMagicMapper implements ICellMagicMapper { } toLanguageMagic(magic: string, kernelId: string): ILanguageMagic { - let languageMagic = this.findMagicForKernel(magic, kernelId.toLowerCase()); + let languageMagic = this.findMagicForKernel(magic, kernelId); if (!languageMagic) { languageMagic = this.findMagicForKernel(magic, defaultKernel); } diff --git a/src/sql/workbench/contrib/notebook/test/browser/cellMagicMapper.test.ts b/src/sql/workbench/contrib/notebook/test/browser/cellMagicMapper.test.ts new file mode 100644 index 0000000000..9bbd3690e8 --- /dev/null +++ b/src/sql/workbench/contrib/notebook/test/browser/cellMagicMapper.test.ts @@ -0,0 +1,97 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the Source EULA. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import * as assert from 'assert'; + +import { CellMagicMapper } from 'sql/workbench/contrib/notebook/browser/models/cellMagicMapper'; +import { ILanguageMagic } from 'sql/workbench/services/notebook/browser/notebookService'; + +const sampleLanguageMagicWithoutKernel: ILanguageMagic = { + language: 'lang', + magic: 'sampleMagicAllKernels' +}; + +const sampleLanguageMagicWithKernel: ILanguageMagic = { + language: 'lang', + magic: 'sampleMagic', + kernels: ['kernel1', 'kernel2'] +}; + +const otherLanguageMagicWithKernel: ILanguageMagic = { + language: 'otherLang', + magic: 'otherMagic', + kernels: ['kernel1', 'kernel2'] +}; + +suite('Cell Magic Mapper', function (): void { + let cellMagicMapper: CellMagicMapper; + let magic: ILanguageMagic; + + test('Should find no magics when empty array passed into constructor', () => { + cellMagicMapper = new CellMagicMapper([]); + magic = cellMagicMapper.toLanguageMagic('', ''); + assert.equal(magic, undefined, 'cell magic should not exist when magic name and kernel is empty string'); + + magic = cellMagicMapper.toLanguageMagic('magicName', 'kernel1'); + assert.equal(magic, undefined, 'cell magic should not exist when magic name and kernel strings are not empty'); + + magic = cellMagicMapper.toLanguageMagic(undefined, undefined); + assert.equal(magic, undefined, 'cell magic should not exist when magic name and kernel strings are undefined'); + }); + + test('Should find magic when magic is passed into constructor', () => { + cellMagicMapper = new CellMagicMapper([sampleLanguageMagicWithKernel]); + magic = cellMagicMapper.toLanguageMagic('sampleMagic', 'kernel1'); + assert.deepEqual(magic, sampleLanguageMagicWithKernel, 'cell magic should match sample magic when looking for first kernel'); + + magic = cellMagicMapper.toLanguageMagic('sampleMagic', 'kernel2'); + assert.deepEqual(magic, sampleLanguageMagicWithKernel, 'cell magic should match sample magic when looking for second kernel'); + }); + + test('Should not find magic when kernel does not match', () => { + cellMagicMapper = new CellMagicMapper([sampleLanguageMagicWithKernel]); + magic = cellMagicMapper.toLanguageMagic('sampleMagic', 'kernel3'); + assert.equal(magic, undefined, 'cell magic be undefined when kernel name does not match'); + + magic = cellMagicMapper.toLanguageMagic('sampleMagic', ''); + assert.equal(magic, undefined, 'cell magic be undefined when kernel name is empty string'); + + magic = cellMagicMapper.toLanguageMagic('sampleMagic', undefined); + assert.equal(magic, undefined, 'cell magic be undefined when kernel name is undefined'); + }); + + test('Should not find magic when magic name does not match', () => { + cellMagicMapper = new CellMagicMapper([sampleLanguageMagicWithKernel]); + magic = cellMagicMapper.toLanguageMagic('sampleMagic1', 'kernel1'); + assert.equal(magic, undefined, 'cell magic be undefined when magic name does not match'); + + magic = cellMagicMapper.toLanguageMagic('', 'kernel1'); + assert.equal(magic, undefined, 'cell magic be undefined when magic name is empty string'); + + magic = cellMagicMapper.toLanguageMagic(undefined, 'kernel1'); + assert.equal(magic, undefined, 'cell magic be undefined when magic name is undefined'); + }); + + test('Should find magic when kernel is not passed in', () => { + cellMagicMapper = new CellMagicMapper([sampleLanguageMagicWithoutKernel]); + magic = cellMagicMapper.toLanguageMagic('sampleMagicAllKernels', 'kernel1'); + assert.deepEqual(magic, sampleLanguageMagicWithoutKernel, 'magic should have been found when no kernel was passed in'); + + magic = cellMagicMapper.toLanguageMagic('sampleMagic1', 'kernel1'); + assert.equal(magic, undefined, 'magic should not be found, since magic name does not match'); + }); + + test('Should find magic multiple magics exist for same kernel', () => { + cellMagicMapper = new CellMagicMapper([sampleLanguageMagicWithoutKernel, sampleLanguageMagicWithKernel, otherLanguageMagicWithKernel]); + magic = cellMagicMapper.toLanguageMagic('sampleMagicAllKernels', 'kernel2'); + assert.deepEqual(magic, sampleLanguageMagicWithoutKernel, 'magic should have been found when no kernel was passed in'); + + magic = cellMagicMapper.toLanguageMagic('sampleMagic', 'kernel2'); + assert.deepEqual(magic, sampleLanguageMagicWithKernel, 'magic should have been found when kernel was passed in'); + + magic = cellMagicMapper.toLanguageMagic('otherMagic', 'kernel2'); + assert.deepEqual(magic, otherLanguageMagicWithKernel, 'magic should have been found for second magic with kernel passed in'); + }); +});