forked from facebook/docusaurus
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add first set of docusaurus-build tests using Jest (facebook#259)
* Add Prettier formatting to source files and example files, and check that Prettier formatting is maintained on PRs * Remove trailing-comma as we are using Node 6 on Circle * Use latest Node 6 LTS version in Circle * Initial test suite * Rename test to match original file * restore test files * Remove yarn.lock from pull request. Will run it again in a separate commit
- Loading branch information
1 parent
8ec4a6b
commit 9dadb35
Showing
4 changed files
with
122 additions
and
6 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,107 @@ | ||
const filepath = require('filepath'); | ||
const fm = require('front-matter'); | ||
const fs = require('fs-extra'); | ||
const glob = require('glob-promise'); | ||
const rimraf = require('rimraf'); | ||
const shell = require('shelljs'); | ||
|
||
const CWD = process.cwd(); | ||
|
||
const siteConfig = require(CWD + '/website/siteConfig.js'); | ||
const buildDir = CWD + '/website/build'; | ||
const docsDir = CWD + '/docs'; | ||
const staticCSSDir = CWD + '/website/static/css'; | ||
|
||
let inputMarkdownFiles = []; | ||
let inputAssetsFiles = []; | ||
let outputHTMLFiles = []; | ||
let outputAssetsFiles = []; | ||
|
||
function generateSite() { | ||
shell.cd('website'); | ||
shell.exec('yarn build'); | ||
} | ||
|
||
function clearBuildFolder() { | ||
return rimraf(buildDir); | ||
} | ||
|
||
beforeEach(() => { | ||
shell.cd(CWD); | ||
}); | ||
|
||
beforeAll(() => { | ||
generateSite(); | ||
return Promise.all([ | ||
glob(docsDir + '/**/*.md'), | ||
glob(buildDir + '/' + siteConfig.projectName + '/docs/*.html'), | ||
glob(docsDir + '/assets/*'), | ||
glob(buildDir + '/' + siteConfig.projectName + '/img/*'), | ||
]).then(function(results) { | ||
inputMarkdownFiles = results[0]; | ||
outputHTMLFiles = results[1]; | ||
inputAssetsFiles = results[2]; | ||
outputAssetsFiles = results[3]; | ||
return; | ||
}); | ||
}); | ||
|
||
function afterAll() { | ||
clearBuildFolder(); | ||
} | ||
|
||
test('Build folder exists', function() { | ||
return fs.stat(buildDir).then(function(status) { | ||
expect(status.isDirectory()).toBeTruthy(); | ||
}); | ||
}); | ||
|
||
test('Generated HTML for each Markdown resource', function() { | ||
let metadata = []; | ||
outputHTMLFiles.forEach(function(file) { | ||
const path = filepath.create(file); | ||
metadata.push(path.basename()); | ||
}); | ||
inputMarkdownFiles.forEach(function(file) { | ||
const path = filepath.create(file); | ||
const data = fs.readFileSync(file, 'utf8'); | ||
const frontmatter = fm(data); | ||
expect(metadata).toContain(frontmatter.attributes.id + '.html'); | ||
}); | ||
}); | ||
|
||
test('Generated table of contents', function() { | ||
outputHTMLFiles.forEach(function(file) { | ||
const fileContents = fs.readFileSync(file, 'utf8'); | ||
expect(fileContents).not.toContain('<AUTOGENERATED_TABLE_OF_CONTENTS>'); | ||
}); | ||
}); | ||
|
||
test('Concatenated CSS files', function() { | ||
return Promise.all([ | ||
glob(staticCSSDir + '/*.css'), | ||
fs.readFile( | ||
buildDir + '/' + siteConfig.projectName + '/css/main.css', | ||
'utf8' | ||
), | ||
]).then(function(results) { | ||
const inputFiles = results[0]; | ||
const outputFile = results[1]; | ||
inputFiles.forEach(function(file) { | ||
const contents = fs.readFileSync(file, 'utf8'); | ||
expect(outputFile).toContain(contents); | ||
}); | ||
}); | ||
}); | ||
|
||
test('Copied assets from /docs/assets', function() { | ||
let metadata = []; | ||
outputAssetsFiles.forEach(function(file) { | ||
const path = filepath.create(file); | ||
metadata.push(path.basename()); | ||
}); | ||
inputAssetsFiles.forEach(function(file) { | ||
const path = filepath.create(file); | ||
expect(metadata).toContain(path.basename()); | ||
}); | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters