diff --git a/extensions/markdown-language-features/src/test/inMemoryDocument.ts b/extensions/markdown-language-features/src/test/inMemoryDocument.ts index f2cf2cf5e99..60ff91f15f1 100644 --- a/extensions/markdown-language-features/src/test/inMemoryDocument.ts +++ b/extensions/markdown-language-features/src/test/inMemoryDocument.ts @@ -15,7 +15,7 @@ export class InMemoryDocument implements vscode.TextDocument { this._lines = this._contents.split(/\n/g); } - fileName: string = ''; + isUntitled: boolean = false; languageId: string = ''; version: number = 1; @@ -23,6 +23,10 @@ export class InMemoryDocument implements vscode.TextDocument { isClosed: boolean = false; eol: vscode.EndOfLine = vscode.EndOfLine.LF; + get fileName(): string { + return this.uri.fsPath; + } + get lineCount(): number { return this._lines.length; } diff --git a/extensions/markdown-language-features/src/test/workspaceSymbolProvider.test.ts b/extensions/markdown-language-features/src/test/workspaceSymbolProvider.test.ts index e4e53c36820..2aa17752b64 100644 --- a/extensions/markdown-language-features/src/test/workspaceSymbolProvider.test.ts +++ b/extensions/markdown-language-features/src/test/workspaceSymbolProvider.test.ts @@ -12,9 +12,11 @@ import { createNewMarkdownEngine } from './engine'; import { InMemoryDocument } from './inMemoryDocument'; +const symbolProvider = new MDDocumentSymbolProvider(createNewMarkdownEngine()); + suite('markdown.WorkspaceSymbolProvider', () => { test('Should not return anything for empty workspace', async () => { - const provider = new MarkdownWorkspaceSymbolProvider(new MDDocumentSymbolProvider(createNewMarkdownEngine()), new class implements WorkspaceMarkdownDocumentProvider { + const provider = new MarkdownWorkspaceSymbolProvider(symbolProvider, new class implements WorkspaceMarkdownDocumentProvider { async getAllMarkdownDocuments() { return []; } @@ -23,10 +25,10 @@ suite('markdown.WorkspaceSymbolProvider', () => { assert.deepEqual(await provider.provideWorkspaceSymbols(''), []); }); - test('Should return single documents content for basic workspace', async () => { + test('Should return symbols from workspace with one markdown file', async () => { const testFileName = vscode.Uri.parse('test.md'); - const provider = new MarkdownWorkspaceSymbolProvider(new MDDocumentSymbolProvider(createNewMarkdownEngine()), new class implements WorkspaceMarkdownDocumentProvider { + const provider = new MarkdownWorkspaceSymbolProvider(symbolProvider, new class implements WorkspaceMarkdownDocumentProvider { async getAllMarkdownDocuments() { return [new InMemoryDocument(testFileName, `# header1\nabc\n## header2`)]; } @@ -37,4 +39,22 @@ suite('markdown.WorkspaceSymbolProvider', () => { assert.strictEqual(symbols[0].name, '# header1'); assert.strictEqual(symbols[1].name, '## header2'); }); + + test('Should return all content basic workspace', async () => { + const fileNameCount = 10; + const files: vscode.TextDocument[] = []; + for (let i = 0; i < fileNameCount; ++i) { + const testFileName = vscode.Uri.parse(`test${i}.md`); + files.push(new InMemoryDocument(testFileName, `# common\nabc\n## header${i}`)); + } + + const provider = new MarkdownWorkspaceSymbolProvider(symbolProvider, new class implements WorkspaceMarkdownDocumentProvider { + async getAllMarkdownDocuments() { + return files; + } + }); + + const symbols = await provider.provideWorkspaceSymbols(''); + assert.strictEqual(symbols.length, fileNameCount * 2); + }); });