fix(v2): docs plugin stability improvement (100% test coverage) (#1912)

* update jest config

* add more tests on docs plugin

* fix(v2): docs plugin should not add routes if there are no docs

* fix

* rm -rf coverage

* nits

* update
This commit is contained in:
Endi 2019-10-29 22:59:27 +07:00 committed by Yangshun Tay
parent ad22c9fab4
commit a8826b98b3
26 changed files with 464 additions and 71 deletions

View file

@ -7,15 +7,17 @@
import fs from 'fs';
import path from 'path';
import shell from 'shelljs';
import spawn from 'cross-spawn';
import lastUpdate from '../lastUpdate';
describe('lastUpdate', () => {
const existingFilePath = path.join(
__dirname,
'__fixtures__/simple-site/docs/hello.md',
);
test('existing test file in repository with Git timestamp', () => {
const existingFilePath = path.join(
__dirname,
'__fixtures__/website/docs/hello.md',
);
const lastUpdateData = lastUpdate(existingFilePath);
expect(lastUpdateData).not.toBeNull();
@ -44,4 +46,30 @@ describe('lastUpdate', () => {
expect(lastUpdate(tempFilePath)).toBeNull();
fs.unlinkSync(tempFilePath);
});
test('Git does not exist', () => {
const mock = jest.spyOn(shell, 'which').mockImplementationOnce(() => null);
const consoleMock = jest.spyOn(console, 'warn').mockImplementation();
const lastUpdateData = lastUpdate(existingFilePath);
expect(lastUpdateData).toBeNull();
expect(consoleMock).toHaveBeenLastCalledWith(
'Sorry, the docs plugin last update options require Git.',
);
consoleMock.mockRestore();
mock.mockRestore();
});
test('Error', () => {
const mock = jest.spyOn(spawn, 'sync').mockImplementationOnce(() => {
throw new Error('PERMISSION Error');
});
const consoleMock = jest.spyOn(console, 'error').mockImplementation();
const lastUpdateData = lastUpdate('/fake/path/');
expect(lastUpdateData).toBeNull();
expect(consoleMock).toHaveBeenLastCalledWith(new Error('PERMISSION Error'));
consoleMock.mockRestore();
mock.mockRestore();
});
});