From b401a2adc0e786e6bd16176f07e76cd1e21c09d3 Mon Sep 17 00:00:00 2001 From: Endilie Y Date: Tue, 18 Sep 2018 12:29:14 +0800 Subject: [PATCH] refactor(v2): use absolute path instead of alias for metadata source (#967) refactor(v2): use absolute path instead of alias for metadata source --- v2/lib/load/docs/metadata.js | 12 +- v2/lib/webpack/loader/markdown.js | 15 +- .../translated_docs/ko/hello.md | 14 + .../versioned_docs/version-1.0.0/hello.md | 14 + .../versioned_docs/version-1.0.1/hello.md | 14 + .../docs/__snapshots__/index.test.js.snap | 597 ------------------ v2/test/load/docs/index.test.js | 150 ++++- v2/test/load/docs/metadata.test.js | 196 +++++- 8 files changed, 366 insertions(+), 646 deletions(-) delete mode 100644 v2/test/load/docs/__snapshots__/index.test.js.snap diff --git a/v2/lib/load/docs/metadata.js b/v2/lib/load/docs/metadata.js index 45c0ff86bf..4f147743c5 100644 --- a/v2/lib/load/docs/metadata.js +++ b/v2/lib/load/docs/metadata.js @@ -106,16 +106,10 @@ module.exports = async function processMetadata( } /* - The docs file source - e.g: `@docs/hello.md` or `@versioned_docs/version-1.0.0/hello.md` + The docs absolute file source + e.g: `/end/docs/hello.md` or `/end/website/versioned_docs/version-1.0.0/hello.md` */ - if (language && language !== defaultLangTag) { - metadata.source = `@translated_docs/${source}`; - } else if (version && version !== 'next') { - metadata.source = `@versioned_docs/${source}`; - } else { - metadata.source = `@docs/${source}`; - } + metadata.source = path.join(refDir, source); /* Build the permalink */ const {baseUrl, docsUrl} = siteConfig; diff --git a/v2/lib/webpack/loader/markdown.js b/v2/lib/webpack/loader/markdown.js index 2f8a26dd05..244205bf7b 100644 --- a/v2/lib/webpack/loader/markdown.js +++ b/v2/lib/webpack/loader/markdown.js @@ -1,4 +1,5 @@ const {getOptions} = require('loader-utils'); +const path = require('path'); const fm = require('front-matter'); module.exports = function(fileString) { @@ -14,25 +15,23 @@ module.exports = function(fileString) { /* Extract content of markdown (without frontmatter) */ const {body} = fm(fileString); - /* Determine the source dir. e.g: @docs, @translated_docs/ko and @versioned_docs/version-1.0.0 */ + /* Determine the source dir. e.g: /docs, /website/versioned_docs/version-1.0.0 */ let sourceDir; - let thisSource = this.resourcePath; + const thisSource = this.resourcePath; if (thisSource.startsWith(translatedDir)) { - thisSource = thisSource.replace(translatedDir, '@translated_docs'); const {language, version} = sourceToMetadata[thisSource] || {}; if (language && version && version !== 'next') { - sourceDir = `@translated_docs/${language}/version-${version}`; + sourceDir = path.join(translatedDir, language, `version-${version}`); } else if (language && (!version || version === 'next')) { - sourceDir = `@translated_docs/${language}`; + sourceDir = path.join(translatedDir, language); } } else if (thisSource.startsWith(versionedDir)) { - thisSource = thisSource.replace(versionedDir, '@versioned_docs'); const {version} = sourceToMetadata[thisSource] || {}; if (version) { - sourceDir = `@versioned_docs/version-${version}`; + sourceDir = path.join(versionedDir, `version-${version}`); } } else if (thisSource.startsWith(docsDir)) { - sourceDir = `@docs`; + sourceDir = docsDir; } /* Replace internal markdown linking (except in fenced blocks) */ diff --git a/v2/test/__fixtures__/translated-site/translated_docs/ko/hello.md b/v2/test/__fixtures__/translated-site/translated_docs/ko/hello.md index d746e8b73b..975bea5b01 100644 --- a/v2/test/__fixtures__/translated-site/translated_docs/ko/hello.md +++ b/v2/test/__fixtures__/translated-site/translated_docs/ko/hello.md @@ -5,6 +5,20 @@ title: Hello, World ! 안녕하세요, 여기 엔 틸리에 :) +## 상대 링크 + +이것 바꾸기 +[foo](foo/bar.md) + +이것을 대체 할 수 없습니다. +[파일] (file.md) + +아래를 교체하지 마십시오. + +``` +[hello] (hello.md) +``` + ## Blockquotes > Blockquotes는 또한 중첩 될 수 있습니다 ... diff --git a/v2/test/__fixtures__/versioned-site/versioned_docs/version-1.0.0/hello.md b/v2/test/__fixtures__/versioned-site/versioned_docs/version-1.0.0/hello.md index cfac7f3eeb..0fd3feedf2 100644 --- a/v2/test/__fixtures__/versioned-site/versioned_docs/version-1.0.0/hello.md +++ b/v2/test/__fixtures__/versioned-site/versioned_docs/version-1.0.0/hello.md @@ -5,6 +5,20 @@ title: Hello, World ! Hi, Endilie here :) +## Relative links + +Replace this +[foo](foo/bar.md) + +Can't replace this +[file](file.md) + +Do not replace below + +``` +[hello](hello.md) +``` + ## Blockquotes > Blockquotes can also be nested... diff --git a/v2/test/__fixtures__/versioned-site/versioned_docs/version-1.0.1/hello.md b/v2/test/__fixtures__/versioned-site/versioned_docs/version-1.0.1/hello.md index 41f40f4754..88394aee1f 100644 --- a/v2/test/__fixtures__/versioned-site/versioned_docs/version-1.0.1/hello.md +++ b/v2/test/__fixtures__/versioned-site/versioned_docs/version-1.0.1/hello.md @@ -5,6 +5,20 @@ title: Hello, World ! Hi, Endilie here :) +## Relative links + +Replace this +[foo](foo/bar.md) + +Can't replace this +[file](file.md) + +Do not replace below + +``` +[hello](hello.md) +``` + ## Blockquotes > Blockquotes can also be nested... diff --git a/v2/test/load/docs/__snapshots__/index.test.js.snap b/v2/test/load/docs/__snapshots__/index.test.js.snap deleted file mode 100644 index 77ec92bbcc..0000000000 --- a/v2/test/load/docs/__snapshots__/index.test.js.snap +++ /dev/null @@ -1,597 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`loadDocs simple website 1`] = ` -Object { - "foo/bar": Object { - "category": "Test", - "id": "foo/bar", - "language": undefined, - "localized_id": "foo/bar", - "next": "foo/baz", - "next_id": "foo/baz", - "next_title": "baz", - "permalink": "/docs/foo/bar", - "sidebar": "docs", - "source": "@docs/foo/bar.md", - "title": "Bar", - "version": undefined, - }, - "foo/baz": Object { - "category": "Test", - "id": "foo/baz", - "language": undefined, - "localized_id": "foo/baz", - "next": "hello", - "next_id": "hello", - "next_title": "Hello, World !", - "permalink": "/docs/foo/baz", - "previous": "foo/bar", - "previous_id": "foo/bar", - "previous_title": "Bar", - "sidebar": "docs", - "source": "@docs/foo/baz.md", - "title": "baz", - "version": undefined, - }, - "hello": Object { - "category": "Guides", - "id": "hello", - "language": undefined, - "localized_id": "hello", - "permalink": "/docs/hello", - "previous": "foo/baz", - "previous_id": "foo/baz", - "previous_title": "baz", - "sidebar": "docs", - "source": "@docs/hello.md", - "title": "Hello, World !", - "version": undefined, - }, - "permalink": Object { - "id": "permalink", - "language": undefined, - "localized_id": "permalink", - "permalink": "/docs/endiliey/permalink", - "source": "@docs/permalink.md", - "title": "Permalink", - "version": undefined, - }, -} -`; - -exports[`loadDocs translated website 1`] = ` -Object { - "en-foo/bar": Object { - "category": "Test", - "id": "en-foo/bar", - "language": "en", - "localized_id": "foo/bar", - "next": "en-foo/baz", - "next_id": "foo/baz", - "next_title": "baz", - "permalink": "/docs/en/foo/bar", - "sidebar": "docs", - "source": "@docs/foo/bar.md", - "title": "Bar", - "version": undefined, - }, - "en-foo/baz": Object { - "category": "Test", - "id": "en-foo/baz", - "language": "en", - "localized_id": "foo/baz", - "next": "en-hello", - "next_id": "hello", - "next_title": "Hello, World !", - "permalink": "/docs/en/foo/baz", - "previous": "en-foo/bar", - "previous_id": "foo/bar", - "previous_title": "Bar", - "sidebar": "docs", - "source": "@docs/foo/baz.md", - "title": "baz", - "version": undefined, - }, - "en-hello": Object { - "category": "Guides", - "id": "en-hello", - "language": "en", - "localized_id": "hello", - "permalink": "/docs/en/hello", - "previous": "en-foo/baz", - "previous_id": "foo/baz", - "previous_title": "baz", - "sidebar": "docs", - "source": "@docs/hello.md", - "title": "Hello, World !", - "version": undefined, - }, - "en-permalink": Object { - "id": "en-permalink", - "language": "en", - "localized_id": "permalink", - "permalink": "/docs/en/endiliey/permalink", - "source": "@docs/permalink.md", - "title": "Permalink", - "version": undefined, - }, - "ko-foo/bar": Object { - "category": "Test", - "id": "ko-foo/bar", - "language": "ko", - "localized_id": "foo/bar", - "next": "ko-foo/baz", - "next_id": "foo/baz", - "next_title": "baz", - "permalink": "/docs/ko/foo/bar", - "sidebar": "docs", - "source": "@translated_docs/ko/foo/bar.md", - "title": "Bar", - "version": undefined, - }, - "ko-foo/baz": Object { - "category": "Test", - "id": "ko-foo/baz", - "language": "ko", - "localized_id": "foo/baz", - "next": "ko-hello", - "next_id": "hello", - "next_title": "Hello, World !", - "permalink": "/docs/ko/foo/baz", - "previous": "ko-foo/bar", - "previous_id": "foo/bar", - "previous_title": "Bar", - "sidebar": "docs", - "source": "@translated_docs/ko/foo/baz.md", - "title": "baz", - "version": undefined, - }, - "ko-hello": Object { - "category": "Guides", - "id": "ko-hello", - "language": "ko", - "localized_id": "hello", - "permalink": "/docs/ko/hello", - "previous": "ko-foo/baz", - "previous_id": "foo/baz", - "previous_title": "baz", - "sidebar": "docs", - "source": "@translated_docs/ko/hello.md", - "title": "Hello, World !", - "version": undefined, - }, -} -`; - -exports[`loadDocs versioned & translated website 1`] = ` -Object { - "en-foo/bar": Object { - "category": "Test", - "id": "en-foo/bar", - "language": "en", - "localized_id": "foo/bar", - "next": "en-foo/baz", - "next_id": "foo/baz", - "next_title": "baz", - "permalink": "/docs/en/next/foo/bar", - "sidebar": "docs", - "source": "@docs/foo/bar.md", - "title": "Bar", - "version": "next", - }, - "en-foo/baz": Object { - "category": "Test", - "id": "en-foo/baz", - "language": "en", - "localized_id": "foo/baz", - "next": "en-hello", - "next_id": "hello", - "next_title": "Hello, World !", - "permalink": "/docs/en/next/foo/baz", - "previous": "en-foo/bar", - "previous_id": "foo/bar", - "previous_title": "Bar", - "sidebar": "docs", - "source": "@docs/foo/baz.md", - "title": "baz", - "version": "next", - }, - "en-hello": Object { - "category": "Guides", - "id": "en-hello", - "language": "en", - "localized_id": "hello", - "permalink": "/docs/en/next/hello", - "previous": "en-foo/baz", - "previous_id": "foo/baz", - "previous_title": "baz", - "sidebar": "docs", - "source": "@docs/hello.md", - "title": "Hello, World !", - "version": "next", - }, - "en-permalink": Object { - "id": "en-permalink", - "language": "en", - "localized_id": "permalink", - "permalink": "/docs/en/next/endiliey/permalink", - "source": "@docs/permalink.md", - "title": "Permalink", - "version": "next", - }, - "en-version-1.0.0-foo/bar": Object { - "category": "Test", - "id": "en-version-1.0.0-foo/bar", - "language": "en", - "localized_id": "version-1.0.0-foo/bar", - "next": "en-version-1.0.0-foo/baz", - "next_id": "version-1.0.0-foo/baz", - "next_title": "Baz", - "permalink": "/docs/en/1.0.0/foo/bar", - "sidebar": "version-1.0.0-docs", - "source": "@versioned_docs/version-1.0.0/foo/bar.md", - "title": "Bar", - "version": "1.0.0", - }, - "en-version-1.0.0-foo/baz": Object { - "category": "Test", - "id": "en-version-1.0.0-foo/baz", - "language": "en", - "localized_id": "version-1.0.0-foo/baz", - "next": "en-version-1.0.0-hello", - "next_id": "version-1.0.0-hello", - "next_title": "Hello, World !", - "permalink": "/docs/en/1.0.0/foo/baz", - "previous": "en-version-1.0.0-foo/bar", - "previous_id": "version-1.0.0-foo/bar", - "previous_title": "Bar", - "sidebar": "version-1.0.0-docs", - "source": "@versioned_docs/version-1.0.0/foo/baz.md", - "title": "Baz", - "version": "1.0.0", - }, - "en-version-1.0.0-hello": Object { - "category": "Guides", - "id": "en-version-1.0.0-hello", - "language": "en", - "localized_id": "version-1.0.0-hello", - "permalink": "/docs/en/1.0.0/hello", - "previous": "en-version-1.0.0-foo/baz", - "previous_id": "version-1.0.0-foo/baz", - "previous_title": "Baz", - "sidebar": "version-1.0.0-docs", - "source": "@versioned_docs/version-1.0.0/hello.md", - "title": "Hello, World !", - "version": "1.0.0", - }, - "en-version-1.0.1-foo/bar": Object { - "category": "Test", - "id": "en-version-1.0.1-foo/bar", - "language": "en", - "localized_id": "version-1.0.1-foo/bar", - "next": "en-version-1.0.1-foo/baz", - "next_id": "version-1.0.1-foo/baz", - "next_title": "Baz", - "permalink": "/docs/en/foo/bar", - "sidebar": "version-1.0.1-docs", - "source": "@versioned_docs/version-1.0.1/foo/bar.md", - "title": "Bar", - "version": "1.0.1", - }, - "en-version-1.0.1-foo/baz": Object { - "category": "Test", - "id": "en-version-1.0.1-foo/baz", - "language": "en", - "localized_id": "version-1.0.1-foo/baz", - "next": "en-version-1.0.1-hello", - "next_id": "version-1.0.1-hello", - "next_title": "Hello, World !", - "permalink": "/docs/en/foo/baz", - "previous": "en-version-1.0.1-foo/bar", - "previous_id": "version-1.0.1-foo/bar", - "previous_title": "Bar", - "sidebar": "version-1.0.1-docs", - "source": "@versioned_docs/version-1.0.1/foo/baz.md", - "title": "Baz", - "version": "1.0.1", - }, - "en-version-1.0.1-hello": Object { - "category": "Guides", - "id": "en-version-1.0.1-hello", - "language": "en", - "localized_id": "version-1.0.1-hello", - "permalink": "/docs/en/hello", - "previous": "en-version-1.0.1-foo/baz", - "previous_id": "version-1.0.1-foo/baz", - "previous_title": "Baz", - "sidebar": "version-1.0.1-docs", - "source": "@versioned_docs/version-1.0.1/hello.md", - "title": "Hello, World !", - "version": "1.0.1", - }, - "ko-foo/bar": Object { - "category": "Test", - "id": "ko-foo/bar", - "language": "ko", - "localized_id": "foo/bar", - "next": "ko-foo/baz", - "next_id": "foo/baz", - "next_title": "baz", - "permalink": "/docs/ko/next/foo/bar", - "sidebar": "docs", - "source": "@translated_docs/ko/foo/bar.md", - "title": "Bar", - "version": "next", - }, - "ko-foo/baz": Object { - "category": "Test", - "id": "ko-foo/baz", - "language": "ko", - "localized_id": "foo/baz", - "next": "ko-hello", - "next_id": "hello", - "next_title": "Hello, World !", - "permalink": "/docs/ko/next/foo/baz", - "previous": "ko-foo/bar", - "previous_id": "foo/bar", - "previous_title": "Bar", - "sidebar": "docs", - "source": "@translated_docs/ko/foo/baz.md", - "title": "baz", - "version": "next", - }, - "ko-hello": Object { - "category": "Guides", - "id": "ko-hello", - "language": "ko", - "localized_id": "hello", - "permalink": "/docs/ko/next/hello", - "previous": "ko-foo/baz", - "previous_id": "foo/baz", - "previous_title": "baz", - "sidebar": "docs", - "source": "@translated_docs/ko/hello.md", - "title": "Hello, World !", - "version": "next", - }, - "ko-version-1.0.0-foo/bar": Object { - "category": "Test", - "id": "ko-version-1.0.0-foo/bar", - "language": "ko", - "localized_id": "version-1.0.0-foo/bar", - "next": "ko-version-1.0.0-foo/baz", - "next_id": "version-1.0.0-foo/baz", - "next_title": "baz", - "permalink": "/docs/ko/1.0.0/foo/bar", - "sidebar": "version-1.0.0-docs", - "source": "@translated_docs/ko/version-1.0.0/foo/bar.md", - "title": "Bar", - "version": "1.0.0", - }, - "ko-version-1.0.0-foo/baz": Object { - "category": "Test", - "id": "ko-version-1.0.0-foo/baz", - "language": "ko", - "localized_id": "version-1.0.0-foo/baz", - "next": "ko-version-1.0.0-hello", - "next_id": "version-1.0.0-hello", - "next_title": "Hello, World !", - "permalink": "/docs/ko/1.0.0/foo/baz", - "previous": "ko-version-1.0.0-foo/bar", - "previous_id": "version-1.0.0-foo/bar", - "previous_title": "Bar", - "sidebar": "version-1.0.0-docs", - "source": "@translated_docs/ko/version-1.0.0/foo/baz.md", - "title": "baz", - "version": "1.0.0", - }, - "ko-version-1.0.0-hello": Object { - "category": "Guides", - "id": "ko-version-1.0.0-hello", - "language": "ko", - "localized_id": "version-1.0.0-hello", - "permalink": "/docs/ko/1.0.0/hello", - "previous": "ko-version-1.0.0-foo/baz", - "previous_id": "version-1.0.0-foo/baz", - "previous_title": "baz", - "sidebar": "version-1.0.0-docs", - "source": "@translated_docs/ko/version-1.0.0/hello.md", - "title": "Hello, World !", - "version": "1.0.0", - }, - "ko-version-1.0.1-foo/bar": Object { - "category": "Test", - "id": "ko-version-1.0.1-foo/bar", - "language": "ko", - "localized_id": "version-1.0.1-foo/bar", - "next": "ko-version-1.0.1-foo/baz", - "next_id": "version-1.0.1-foo/baz", - "next_title": "baz", - "permalink": "/docs/ko/foo/bar", - "sidebar": "version-1.0.1-docs", - "source": "@translated_docs/ko/version-1.0.1/foo/bar.md", - "title": "Bar", - "version": "1.0.1", - }, - "ko-version-1.0.1-foo/baz": Object { - "category": "Test", - "id": "ko-version-1.0.1-foo/baz", - "language": "ko", - "localized_id": "version-1.0.1-foo/baz", - "next": "ko-version-1.0.1-hello", - "next_id": "version-1.0.1-hello", - "next_title": "Hello, World !", - "permalink": "/docs/ko/foo/baz", - "previous": "ko-version-1.0.1-foo/bar", - "previous_id": "version-1.0.1-foo/bar", - "previous_title": "Bar", - "sidebar": "version-1.0.1-docs", - "source": "@translated_docs/ko/version-1.0.1/foo/baz.md", - "title": "baz", - "version": "1.0.1", - }, - "ko-version-1.0.1-hello": Object { - "category": "Guides", - "id": "ko-version-1.0.1-hello", - "language": "ko", - "localized_id": "version-1.0.1-hello", - "permalink": "/docs/ko/hello", - "previous": "ko-version-1.0.1-foo/baz", - "previous_id": "version-1.0.1-foo/baz", - "previous_title": "baz", - "sidebar": "version-1.0.1-docs", - "source": "@translated_docs/ko/version-1.0.1/hello.md", - "title": "Hello, World !", - "version": "1.0.1", - }, -} -`; - -exports[`loadDocs versioned website 1`] = ` -Object { - "foo/bar": Object { - "category": "Test", - "id": "foo/bar", - "language": undefined, - "localized_id": "foo/bar", - "next": "foo/baz", - "next_id": "foo/baz", - "next_title": "baz", - "permalink": "/docs/next/foo/bar", - "sidebar": "docs", - "source": "@docs/foo/bar.md", - "title": "Bar", - "version": "next", - }, - "foo/baz": Object { - "category": "Test", - "id": "foo/baz", - "language": undefined, - "localized_id": "foo/baz", - "next": "hello", - "next_id": "hello", - "next_title": "Hello, World !", - "permalink": "/docs/next/foo/baz", - "previous": "foo/bar", - "previous_id": "foo/bar", - "previous_title": "Bar", - "sidebar": "docs", - "source": "@docs/foo/baz.md", - "title": "baz", - "version": "next", - }, - "hello": Object { - "category": "Guides", - "id": "hello", - "language": undefined, - "localized_id": "hello", - "permalink": "/docs/next/hello", - "previous": "foo/baz", - "previous_id": "foo/baz", - "previous_title": "baz", - "sidebar": "docs", - "source": "@docs/hello.md", - "title": "Hello, World !", - "version": "next", - }, - "permalink": Object { - "id": "permalink", - "language": undefined, - "localized_id": "permalink", - "permalink": "/docs/next/endiliey/permalink", - "source": "@docs/permalink.md", - "title": "Permalink", - "version": "next", - }, - "version-1.0.0-foo/bar": Object { - "category": "Test", - "id": "version-1.0.0-foo/bar", - "language": undefined, - "localized_id": "version-1.0.0-foo/bar", - "next": "version-1.0.0-foo/baz", - "next_id": "version-1.0.0-foo/baz", - "next_title": "Baz", - "permalink": "/docs/1.0.0/foo/bar", - "sidebar": "version-1.0.0-docs", - "source": "@versioned_docs/version-1.0.0/foo/bar.md", - "title": "Bar", - "version": "1.0.0", - }, - "version-1.0.0-foo/baz": Object { - "category": "Test", - "id": "version-1.0.0-foo/baz", - "language": undefined, - "localized_id": "version-1.0.0-foo/baz", - "next": "version-1.0.0-hello", - "next_id": "version-1.0.0-hello", - "next_title": "Hello, World !", - "permalink": "/docs/1.0.0/foo/baz", - "previous": "version-1.0.0-foo/bar", - "previous_id": "version-1.0.0-foo/bar", - "previous_title": "Bar", - "sidebar": "version-1.0.0-docs", - "source": "@versioned_docs/version-1.0.0/foo/baz.md", - "title": "Baz", - "version": "1.0.0", - }, - "version-1.0.0-hello": Object { - "category": "Guides", - "id": "version-1.0.0-hello", - "language": undefined, - "localized_id": "version-1.0.0-hello", - "permalink": "/docs/1.0.0/hello", - "previous": "version-1.0.0-foo/baz", - "previous_id": "version-1.0.0-foo/baz", - "previous_title": "Baz", - "sidebar": "version-1.0.0-docs", - "source": "@versioned_docs/version-1.0.0/hello.md", - "title": "Hello, World !", - "version": "1.0.0", - }, - "version-1.0.1-foo/bar": Object { - "category": "Test", - "id": "version-1.0.1-foo/bar", - "language": undefined, - "localized_id": "version-1.0.1-foo/bar", - "next": "version-1.0.1-foo/baz", - "next_id": "version-1.0.1-foo/baz", - "next_title": "Baz", - "permalink": "/docs/foo/bar", - "sidebar": "version-1.0.1-docs", - "source": "@versioned_docs/version-1.0.1/foo/bar.md", - "title": "Bar", - "version": "1.0.1", - }, - "version-1.0.1-foo/baz": Object { - "category": "Test", - "id": "version-1.0.1-foo/baz", - "language": undefined, - "localized_id": "version-1.0.1-foo/baz", - "next": "version-1.0.1-hello", - "next_id": "version-1.0.1-hello", - "next_title": "Hello, World !", - "permalink": "/docs/foo/baz", - "previous": "version-1.0.1-foo/bar", - "previous_id": "version-1.0.1-foo/bar", - "previous_title": "Bar", - "sidebar": "version-1.0.1-docs", - "source": "@versioned_docs/version-1.0.1/foo/baz.md", - "title": "Baz", - "version": "1.0.1", - }, - "version-1.0.1-hello": Object { - "category": "Guides", - "id": "version-1.0.1-hello", - "language": undefined, - "localized_id": "version-1.0.1-hello", - "permalink": "/docs/hello", - "previous": "version-1.0.1-foo/baz", - "previous_id": "version-1.0.1-foo/baz", - "previous_title": "Baz", - "sidebar": "version-1.0.1-docs", - "source": "@versioned_docs/version-1.0.1/hello.md", - "title": "Hello, World !", - "version": "1.0.1", - }, -} -`; diff --git a/v2/test/load/docs/index.test.js b/v2/test/load/docs/index.test.js index cca7155674..f40e7d83b6 100644 --- a/v2/test/load/docs/index.test.js +++ b/v2/test/load/docs/index.test.js @@ -1,3 +1,4 @@ +import path from 'path'; import loadDocs from '@lib/load/docs'; import loadSetup from '../../loadSetup'; @@ -6,27 +7,162 @@ describe('loadDocs', () => { const props = await loadSetup('simple'); const {siteDir, docsDir, env, siteConfig} = props; const {docsMetadatas} = await loadDocs({siteDir, docsDir, env, siteConfig}); - expect(docsMetadatas).toMatchSnapshot(); + expect(docsMetadatas.hello).toEqual({ + category: 'Guides', + id: 'hello', + language: undefined, + localized_id: 'hello', + permalink: '/docs/hello', + previous: 'foo/baz', + previous_id: 'foo/baz', + previous_title: 'baz', + sidebar: 'docs', + source: path.join(docsDir, 'hello.md'), + title: 'Hello, World !', + version: undefined, + }); + expect(docsMetadatas['foo/bar']).toEqual({ + category: 'Test', + id: 'foo/bar', + language: undefined, + localized_id: 'foo/bar', + next: 'foo/baz', + next_id: 'foo/baz', + next_title: 'baz', + permalink: '/docs/foo/bar', + sidebar: 'docs', + source: path.join(docsDir, 'foo', 'bar.md'), + title: 'Bar', + version: undefined, + }); }); test('versioned website', async () => { const props = await loadSetup('versioned'); - const {siteDir, docsDir, env, siteConfig} = props; + const {siteDir, docsDir, versionedDir, env, siteConfig} = props; const {docsMetadatas} = await loadDocs({siteDir, docsDir, env, siteConfig}); - expect(docsMetadatas).toMatchSnapshot(); + expect(docsMetadatas['version-1.0.0-foo/bar']).toEqual({ + category: 'Test', + id: 'version-1.0.0-foo/bar', + language: undefined, + localized_id: 'version-1.0.0-foo/bar', + next: 'version-1.0.0-foo/baz', + next_id: 'version-1.0.0-foo/baz', + next_title: 'Baz', + permalink: '/docs/1.0.0/foo/bar', + sidebar: 'version-1.0.0-docs', + source: path.join(versionedDir, 'version-1.0.0/foo/bar.md'), + title: 'Bar', + version: '1.0.0', + }); + expect(docsMetadatas['foo/bar']).toEqual({ + category: 'Test', + id: 'foo/bar', + language: undefined, + localized_id: 'foo/bar', + next: 'foo/baz', + next_id: 'foo/baz', + next_title: 'baz', + permalink: '/docs/next/foo/bar', + sidebar: 'docs', + source: path.join(docsDir, 'foo/bar.md'), + title: 'Bar', + version: 'next', + }); }); test('versioned & translated website', async () => { const props = await loadSetup('transversioned'); - const {siteDir, docsDir, env, siteConfig} = props; + const { + siteDir, + docsDir, + env, + translatedDir, + versionedDir, + siteConfig, + } = props; const {docsMetadatas} = await loadDocs({siteDir, docsDir, env, siteConfig}); - expect(docsMetadatas).toMatchSnapshot(); + expect(docsMetadatas['ko-version-1.0.0-foo/bar']).toEqual({ + category: 'Test', + id: 'ko-version-1.0.0-foo/bar', + language: 'ko', + localized_id: 'version-1.0.0-foo/bar', + next: 'ko-version-1.0.0-foo/baz', + next_id: 'version-1.0.0-foo/baz', + next_title: 'baz', + permalink: '/docs/ko/1.0.0/foo/bar', + sidebar: 'version-1.0.0-docs', + source: path.join(translatedDir, '/ko/version-1.0.0/foo/bar.md'), + title: 'Bar', + version: '1.0.0', + }); + expect(docsMetadatas['en-version-1.0.0-foo/baz']).toEqual({ + category: 'Test', + id: 'en-version-1.0.0-foo/baz', + language: 'en', + localized_id: 'version-1.0.0-foo/baz', + next: 'en-version-1.0.0-hello', + next_id: 'version-1.0.0-hello', + next_title: 'Hello, World !', + permalink: '/docs/en/1.0.0/foo/baz', + previous: 'en-version-1.0.0-foo/bar', + previous_id: 'version-1.0.0-foo/bar', + previous_title: 'Bar', + sidebar: 'version-1.0.0-docs', + source: path.join(versionedDir, 'version-1.0.0/foo/baz.md'), + title: 'Baz', + version: '1.0.0', + }); + expect(docsMetadatas['en-hello']).toEqual({ + category: 'Guides', + id: 'en-hello', + language: 'en', + localized_id: 'hello', + permalink: '/docs/en/next/hello', + previous: 'en-foo/baz', + previous_id: 'foo/baz', + previous_title: 'baz', + sidebar: 'docs', + source: path.join(docsDir, 'hello.md'), + title: 'Hello, World !', + version: 'next', + }); }); test('translated website', async () => { const props = await loadSetup('translated'); - const {siteDir, docsDir, env, siteConfig} = props; + const {siteDir, translatedDir, docsDir, env, siteConfig} = props; const {docsMetadatas} = await loadDocs({siteDir, docsDir, env, siteConfig}); - expect(docsMetadatas).toMatchSnapshot(); + expect(docsMetadatas['ko-foo/baz']).toEqual({ + category: 'Test', + id: 'ko-foo/baz', + language: 'ko', + localized_id: 'foo/baz', + next: 'ko-hello', + next_id: 'hello', + next_title: 'Hello, World !', + permalink: '/docs/ko/foo/baz', + previous: 'ko-foo/bar', + previous_id: 'foo/bar', + previous_title: 'Bar', + sidebar: 'docs', + source: path.join(translatedDir, 'ko', 'foo', 'baz.md'), + title: 'baz', + version: undefined, + }); + expect(docsMetadatas['en-foo/bar']).toEqual({ + category: 'Test', + id: 'en-foo/bar', + language: 'en', + localized_id: 'foo/bar', + next: 'en-foo/baz', + next_id: 'foo/baz', + next_title: 'baz', + permalink: '/docs/en/foo/bar', + sidebar: 'docs', + source: path.join(docsDir, 'foo', 'bar.md'), + title: 'Bar', + version: undefined, + }); }); }); diff --git a/v2/test/load/docs/metadata.test.js b/v2/test/load/docs/metadata.test.js index 9fe717009a..d9c395995f 100644 --- a/v2/test/load/docs/metadata.test.js +++ b/v2/test/load/docs/metadata.test.js @@ -15,7 +15,7 @@ describe('processMetadata', () => { language: undefined, localized_id: 'foo/bar', permalink: '/docs/foo/bar', - source: '@docs/foo/bar.md', + source: path.join(docsDir, sourceA), title: 'Bar', version: undefined, }); @@ -24,7 +24,7 @@ describe('processMetadata', () => { language: undefined, localized_id: 'hello', permalink: '/docs/hello', - source: '@docs/hello.md', + source: path.join(docsDir, sourceB), title: 'Hello, World !', version: undefined, }); @@ -40,7 +40,7 @@ describe('processMetadata', () => { language: undefined, localized_id: 'permalink', permalink: '/docs/endiliey/permalink', - source: '@docs/permalink.md', + source: path.join(docsDir, source), title: 'Permalink', version: undefined, }); @@ -48,18 +48,34 @@ describe('processMetadata', () => { test('versioned docs (without translation)', async () => { const props = await loadSetup('versioned'); - const {siteDir, env, siteConfig} = props; - const refDir = path.join(siteDir, 'versioned_docs'); + const {siteDir, docsDir, env, siteConfig} = props; + const versionedDir = path.join(siteDir, 'versioned_docs'); const sourceA = path.join('version-1.0.0', 'foo', 'bar.md'); const sourceB = path.join('version-1.0.0', 'hello.md'); - const dataA = await processMetadata(sourceA, refDir, env, {}, siteConfig); - const dataB = await processMetadata(sourceB, refDir, env, {}, siteConfig); + const sourceC = path.join('foo', 'bar.md'); + const sourceD = path.join('hello.md'); + const dataA = await processMetadata( + sourceA, + versionedDir, + env, + {}, + siteConfig, + ); + const dataB = await processMetadata( + sourceB, + versionedDir, + env, + {}, + siteConfig, + ); + const dataC = await processMetadata(sourceC, docsDir, env, {}, siteConfig); + const dataD = await processMetadata(sourceD, docsDir, env, {}, siteConfig); expect(dataA).toEqual({ id: 'version-1.0.0-foo/bar', language: undefined, localized_id: 'version-1.0.0-foo/bar', permalink: '/docs/1.0.0/foo/bar', - source: '@versioned_docs/version-1.0.0/foo/bar.md', + source: path.join(versionedDir, sourceA), title: 'Bar', version: '1.0.0', }); @@ -68,30 +84,91 @@ describe('processMetadata', () => { language: undefined, localized_id: 'version-1.0.0-hello', permalink: '/docs/1.0.0/hello', - source: '@versioned_docs/version-1.0.0/hello.md', + source: path.join(versionedDir, sourceB), title: 'Hello, World !', version: '1.0.0', }); + expect(dataC).toEqual({ + id: 'foo/bar', + language: undefined, + localized_id: 'foo/bar', + permalink: '/docs/next/foo/bar', + source: path.join(docsDir, sourceC), + title: 'Bar', + version: 'next', + }); + expect(dataD).toEqual({ + id: 'hello', + language: undefined, + localized_id: 'hello', + permalink: '/docs/next/hello', + source: path.join(docsDir, sourceD), + title: 'Hello, World !', + version: 'next', + }); }); test('translated versioned docs', async () => { const props = await loadSetup('transversioned'); - const {siteDir, env, siteConfig} = props; - const refDir = path.join(siteDir, 'translated_docs'); + const {docsDir, translatedDir, versionedDir, env, siteConfig} = props; const sourceA = path.join('ko', 'version-1.0.0', 'foo', 'bar.md'); const sourceB = path.join('ko', 'version-1.0.0', 'hello.md'); const sourceC = path.join('ko', 'version-1.0.1', 'foo', 'bar.md'); const sourceD = path.join('ko', 'version-1.0.1', 'hello.md'); - const dataA = await processMetadata(sourceA, refDir, env, {}, siteConfig); - const dataB = await processMetadata(sourceB, refDir, env, {}, siteConfig); - const dataC = await processMetadata(sourceC, refDir, env, {}, siteConfig); - const dataD = await processMetadata(sourceD, refDir, env, {}, siteConfig); + const sourceE = path.join('foo', 'bar.md'); + const sourceF = path.join('hello.md'); + const sourceG = path.join('version-1.0.0', 'foo', 'bar.md'); + const sourceH = path.join('version-1.0.0', 'hello.md'); + const dataA = await processMetadata( + sourceA, + translatedDir, + env, + {}, + siteConfig, + ); + const dataB = await processMetadata( + sourceB, + translatedDir, + env, + {}, + siteConfig, + ); + const dataC = await processMetadata( + sourceC, + translatedDir, + env, + {}, + siteConfig, + ); + const dataD = await processMetadata( + sourceD, + translatedDir, + env, + {}, + siteConfig, + ); + const dataE = await processMetadata(sourceE, docsDir, env, {}, siteConfig); + const dataF = await processMetadata(sourceF, docsDir, env, {}, siteConfig); + const dataG = await processMetadata( + sourceG, + versionedDir, + env, + {}, + siteConfig, + ); + const dataH = await processMetadata( + sourceH, + versionedDir, + env, + {}, + siteConfig, + ); expect(dataA).toEqual({ id: 'ko-version-1.0.0-foo/bar', language: 'ko', localized_id: 'version-1.0.0-foo/bar', permalink: '/docs/ko/1.0.0/foo/bar', - source: '@translated_docs/ko/version-1.0.0/foo/bar.md', + source: path.join(translatedDir, sourceA), title: 'Bar', version: '1.0.0', }); @@ -100,7 +177,7 @@ describe('processMetadata', () => { language: 'ko', localized_id: 'version-1.0.0-hello', permalink: '/docs/ko/1.0.0/hello', - source: '@translated_docs/ko/version-1.0.0/hello.md', + source: path.join(translatedDir, sourceB), title: 'Hello, World !', version: '1.0.0', }); @@ -109,7 +186,7 @@ describe('processMetadata', () => { language: 'ko', localized_id: 'version-1.0.1-foo/bar', permalink: '/docs/ko/foo/bar', - source: '@translated_docs/ko/version-1.0.1/foo/bar.md', + source: path.join(translatedDir, sourceC), title: 'Bar', version: '1.0.1', }); @@ -118,26 +195,77 @@ describe('processMetadata', () => { language: 'ko', localized_id: 'version-1.0.1-hello', permalink: '/docs/ko/hello', - source: '@translated_docs/ko/version-1.0.1/hello.md', + source: path.join(translatedDir, sourceD), title: 'Hello, World !', version: '1.0.1', }); + expect(dataE).toEqual({ + id: 'en-foo/bar', + language: 'en', + localized_id: 'foo/bar', + permalink: '/docs/en/next/foo/bar', + source: path.join(docsDir, sourceE), + title: 'Bar', + version: 'next', + }); + expect(dataF).toEqual({ + id: 'en-hello', + language: 'en', + localized_id: 'hello', + permalink: '/docs/en/next/hello', + source: path.join(docsDir, sourceF), + title: 'Hello, World !', + version: 'next', + }); + expect(dataG).toEqual({ + id: 'en-version-1.0.0-foo/bar', + language: 'en', + localized_id: 'version-1.0.0-foo/bar', + permalink: '/docs/en/1.0.0/foo/bar', + source: path.join(versionedDir, sourceG), + title: 'Bar', + version: '1.0.0', + }); + expect(dataH).toEqual({ + id: 'en-version-1.0.0-hello', + language: 'en', + localized_id: 'version-1.0.0-hello', + permalink: '/docs/en/1.0.0/hello', + source: path.join(versionedDir, sourceH), + title: 'Hello, World !', + version: '1.0.0', + }); }); test('translated docs only', async () => { const props = await loadSetup('translated'); - const {siteDir, env, siteConfig} = props; - const refDir = path.join(siteDir, 'translated_docs'); + const {docsDir, translatedDir, env, siteConfig} = props; const sourceA = path.join('ko', 'foo', 'bar.md'); const sourceB = path.join('ko', 'hello.md'); - const dataA = await processMetadata(sourceA, refDir, env, {}, siteConfig); - const dataB = await processMetadata(sourceB, refDir, env, {}, siteConfig); + const sourceC = path.join('foo', 'bar.md'); + const sourceD = path.join('hello.md'); + const dataA = await processMetadata( + sourceA, + translatedDir, + env, + {}, + siteConfig, + ); + const dataB = await processMetadata( + sourceB, + translatedDir, + env, + {}, + siteConfig, + ); + const dataC = await processMetadata(sourceC, docsDir, env, {}, siteConfig); + const dataD = await processMetadata(sourceD, docsDir, env, {}, siteConfig); expect(dataA).toEqual({ id: 'ko-foo/bar', language: 'ko', localized_id: 'foo/bar', permalink: '/docs/ko/foo/bar', - source: '@translated_docs/ko/foo/bar.md', + source: path.join(translatedDir, sourceA), title: 'Bar', version: undefined, }); @@ -146,7 +274,25 @@ describe('processMetadata', () => { language: 'ko', localized_id: 'hello', permalink: '/docs/ko/hello', - source: '@translated_docs/ko/hello.md', + source: path.join(translatedDir, sourceB), + title: 'Hello, World !', + version: undefined, + }); + expect(dataC).toEqual({ + id: 'en-foo/bar', + language: 'en', + localized_id: 'foo/bar', + permalink: '/docs/en/foo/bar', + source: path.join(docsDir, sourceC), + title: 'Bar', + version: undefined, + }); + expect(dataD).toEqual({ + id: 'en-hello', + language: 'en', + localized_id: 'hello', + permalink: '/docs/en/hello', + source: path.join(docsDir, sourceD), title: 'Hello, World !', version: undefined, });