Skip to content

Commit 6be7433

Browse files
mendrewsapegin
authored andcommitted
Fix: getExampleFilename should use default example if file does not exist (styleguidist#1362)
Closes styleguidist#1338
1 parent 0f461ab commit 6be7433

File tree

4 files changed

+52
-31
lines changed

4 files changed

+52
-31
lines changed

package-lock.json

Lines changed: 33 additions & 30 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,7 @@
126126
"jest-serializer-html": "^6.0.0",
127127
"keymirror": "^0.1.1",
128128
"lint-staged": "^8.1.5",
129+
"memfs": "^2.15.2",
129130
"prettier": "1.16.4",
130131
"raf": "^3.4.1",
131132
"react": "^16.8.5",

src/loaders/utils/__tests__/getExamples.spec.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,34 @@
11
import deabsDeep from 'deabsdeep';
2+
import { vol } from 'memfs';
23
import getExamples from '../getExamples';
34

5+
jest.mock('fs', () => {
6+
return require('memfs').fs;
7+
});
8+
49
const file = '../pizza.js';
510
const displayName = 'Pizza';
611
const examplesFile = './Pizza.md';
712
const defaultExample = './Default.md';
813

14+
afterEach(vol.reset.bind(vol));
15+
916
test('require an example file if component has example file', () => {
17+
vol.fromJSON({ [examplesFile]: 'pizza' });
18+
1019
const result = getExamples(file, displayName, examplesFile);
1120
expect(deabsDeep(result).require).toMatchInlineSnapshot(
1221
`"!!~/src/loaders/examples-loader.js?displayName=Pizza&file=.%2F..%2Fpizza.js&shouldShowDefaultExample=false!./Pizza.md"`
1322
);
1423
});
1524

25+
test('require default example file if component has no example in the file system', () => {
26+
const result = getExamples(file, displayName, examplesFile, defaultExample);
27+
expect(deabsDeep(result).require).toMatchInlineSnapshot(
28+
`"!!~/src/loaders/examples-loader.js?displayName=Pizza&file=.%2F..%2Fpizza.js&shouldShowDefaultExample=false!./Default.md"`
29+
);
30+
});
31+
1632
test('require default example has no example file', () => {
1733
const result = getExamples(file, displayName, false, defaultExample);
1834
expect(deabsDeep(result).require).toMatchInlineSnapshot(

src/loaders/utils/getExamples.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
// @flow
22
import path from 'path';
3+
import fs from 'fs';
34
import { encode } from 'qss';
45
import requireIt from './requireIt';
56

@@ -14,7 +15,7 @@ module.exports = function getExamples(
1415
examplesFile: string,
1516
defaultExample: string
1617
): {} | null {
17-
const examplesFileToLoad = examplesFile || defaultExample;
18+
const examplesFileToLoad = (fs.existsSync(examplesFile) && examplesFile) || defaultExample;
1819
if (!examplesFileToLoad) {
1920
return null;
2021
}

0 commit comments

Comments
 (0)