diff --git a/extensions/notebook/src/test/book/book.test.ts b/extensions/notebook/src/test/book/book.test.ts index 0ac2edb790..213676d7c0 100644 --- a/extensions/notebook/src/test/book/book.test.ts +++ b/extensions/notebook/src/test/book/book.test.ts @@ -3,89 +3,101 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -// import * as vscode from 'vscode'; -// import * as should from 'should'; -// import * as TypeMoq from 'typemoq'; -// import * as path from 'path'; -// import * as fs from 'fs'; -// import * as rimraf from 'rimraf'; -// import * as os from 'os'; -// import { BookTreeViewProvider } from '../../book/bookTreeView'; -// import { BookTreeItem } from '../../book/bookTreeItem'; +import * as vscode from 'vscode'; +import * as should from 'should'; +import * as TypeMoq from 'typemoq'; +import * as path from 'path'; +import * as fs from 'fs-extra'; +import * as rimraf from 'rimraf'; +import * as os from 'os'; +import { BookTreeViewProvider } from '../../book/bookTreeView'; +import { BookTreeItem } from '../../book/bookTreeItem'; +import * as assert from 'assert'; -// describe('BookTreeViewProvider.getChildren', function (): void { -// const rootFolderPath = path.join(os.tmpdir(), 'testBook'); -// const dataFolderPath = path.join(rootFolderPath, '_data'); -// const contentFolderPath = path.join(rootFolderPath, 'content'); -// const configFile = path.join(rootFolderPath, '_config.yml'); -// const tableOfContentsFile = path.join(dataFolderPath, 'toc.yml'); -// const notebookFile = path.join(contentFolderPath, 'notebook.ipynb'); -// const markdownFile = path.join(contentFolderPath, 'markdown.md'); -// const expectedNotebook = { -// title: 'Notebook', -// url: '/notebook' -// }; -// const expectedMarkdown = { -// title: 'Markdown', -// url: '/markdown' -// }; -// const expectedExternalLink = { -// title: 'GitHub', -// url: 'https://github.com/', -// external: true -// }; -// const expectedBook = { -// sections: [expectedNotebook, expectedMarkdown, expectedExternalLink], -// title: 'Test Book' -// }; +const SEED = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; -// let mockExtensionContext: TypeMoq.IMock; -// let bookTreeViewProvider: BookTreeViewProvider; -// let book: BookTreeItem; +describe('BookTreeViewProvider.getChildren', function (): void { + let rootFolderPath: string; + const expectedNotebook = { + title: 'Notebook', + url: '/notebook' + }; + const expectedMarkdown = { + title: 'Markdown', + url: '/markdown' + }; + const expectedExternalLink = { + title: 'GitHub', + url: 'https://github.com/', + external: true + }; + const expectedBook = { + sections: [expectedNotebook, expectedMarkdown, expectedExternalLink], + title: 'Test Book' + }; -// this.beforeAll(async () => { -// fs.mkdirSync(rootFolderPath); -// fs.mkdirSync(dataFolderPath); -// fs.mkdirSync(contentFolderPath); -// fs.writeFileSync(configFile, 'title: Test Book'); -// fs.writeFileSync(tableOfContentsFile, '- title: Notebook\n url: /notebook\n- title: Markdown\n url: /markdown\n- title: GitHub\n url: https://github.com/\n external: true'); -// fs.writeFileSync(notebookFile, ''); -// fs.writeFileSync(markdownFile, ''); -// mockExtensionContext = TypeMoq.Mock.ofType(); -// let folder: vscode.WorkspaceFolder = { -// uri: vscode.Uri.parse(rootFolderPath), -// name: '', -// index: 0 -// }; -// bookTreeViewProvider = new BookTreeViewProvider([folder], mockExtensionContext.object); -// }); + let mockExtensionContext: TypeMoq.IMock; + let bookTreeViewProvider: BookTreeViewProvider; + let book: BookTreeItem; -// it('should return all book nodes when element is undefined', async function (): Promise { -// const children = await bookTreeViewProvider.getChildren(); -// should(children).be.Array(); -// should(children.length).equal(1); -// book = children[0]; -// should(book.title).equal(expectedBook.title); -// }); + this.beforeAll(async () => { + try { + let testFolder = ''; + for (let i = 0; i < 8; i++) { + testFolder += SEED.charAt(Math.floor(Math.random() * SEED.length)); + } + rootFolderPath = path.join(os.tmpdir(), 'BookTestData_' + testFolder); + let dataFolderPath = path.join(rootFolderPath, '_data'); + let contentFolderPath = path.join(rootFolderPath, 'content'); + let configFile = path.join(rootFolderPath, '_config.yml'); + let tableOfContentsFile = path.join(dataFolderPath, 'toc.yml'); + let notebookFile = path.join(contentFolderPath, 'notebook.ipynb'); + let markdownFile = path.join(contentFolderPath, 'markdown.md'); + await fs.mkdir(rootFolderPath); + await fs.mkdir(dataFolderPath); + await fs.mkdir(contentFolderPath); + await fs.writeFile(configFile, 'title: Test Book'); + await fs.writeFile(tableOfContentsFile, '- title: Notebook\n url: /notebook\n- title: Markdown\n url: /markdown\n- title: GitHub\n url: https://github.com/\n external: true'); + await fs.writeFile(notebookFile, ''); + await fs.writeFile(markdownFile, ''); + mockExtensionContext = TypeMoq.Mock.ofType(); + let folder: vscode.WorkspaceFolder = { + uri: vscode.Uri.file(rootFolderPath), + name: '', + index: 0 + }; + bookTreeViewProvider = new BookTreeViewProvider([folder], mockExtensionContext.object); + } catch (e) { + assert.ok(false, e); + } + }); -// it('should return all page nodes when element is a book', async function (): Promise { -// const children = await bookTreeViewProvider.getChildren(book); -// should(children).be.Array(); -// should(children.length).equal(3); -// const notebook = children[0]; -// const markdown = children[1]; -// const externalLink = children[2]; -// should(notebook.title).equal(expectedNotebook.title); -// should(notebook.uri).equal(expectedNotebook.url); -// should(markdown.title).equal(expectedMarkdown.title); -// should(markdown.uri).equal(expectedMarkdown.url); -// should(externalLink.title).equal(expectedExternalLink.title); -// should(externalLink.uri).equal(expectedExternalLink.url); -// }); + it('should return all book nodes when element is undefined', async function (): Promise { + const children = await bookTreeViewProvider.getChildren(); + should(children).be.Array(); + should(children.length).equal(1); + book = children[0]; + should(book.title).equal(expectedBook.title); + }); -// after(async function () { -// if (fs.existsSync(rootFolderPath)) { -// rimraf.sync(rootFolderPath); -// } -// }); -// }); + it('should return all page nodes when element is a book', async function (): Promise { + const children = await bookTreeViewProvider.getChildren(book); + should(children).be.Array(); + should(children.length).equal(3); + const notebook = children[0]; + const markdown = children[1]; + const externalLink = children[2]; + should(notebook.title).equal(expectedNotebook.title); + should(notebook.uri).equal(expectedNotebook.url); + should(markdown.title).equal(expectedMarkdown.title); + should(markdown.uri).equal(expectedMarkdown.url); + should(externalLink.title).equal(expectedExternalLink.title); + should(externalLink.uri).equal(expectedExternalLink.url); + }); + + this.afterAll(async function () { + if (fs.existsSync(rootFolderPath)) { + rimraf.sync(rootFolderPath); + } + }); +});