From f4ace6c009615a1459910d71cce5a9ccae6deb10 Mon Sep 17 00:00:00 2001 From: Nikki Reece Date: Mon, 31 Aug 2020 10:59:54 -0500 Subject: [PATCH 1/3] send context to transformSource --- addons/docs/docs/recipes.md | 2 +- addons/docs/src/blocks/enhanceSource.test.ts | 35 +++++++++++++++++-- addons/docs/src/blocks/enhanceSource.ts | 2 +- .../__snapshots__/button.stories.storyshot | 6 ++++ .../stories/button.stories.js | 35 +++++++++++++++---- lib/api/src/version.ts | 2 +- lib/cli/versions.json | 2 +- 7 files changed, 72 insertions(+), 12 deletions(-) diff --git a/addons/docs/docs/recipes.md b/addons/docs/docs/recipes.md index e08fe60c0f0e..9eadd81ba218 100644 --- a/addons/docs/docs/recipes.md +++ b/addons/docs/docs/recipes.md @@ -270,7 +270,7 @@ Alternatively, you can provide a function in the `docs.transformSource` paramete const SOURCE_REGEX = /^\(\) => `(.*)`$/; export const parameters = { docs: { - transformSource: (src, storyId) => { + transformSource: (src, storyId, storyContext) => { const match = SOURCE_REGEX.exec(src); return match ? match[1] : src; }, diff --git a/addons/docs/src/blocks/enhanceSource.test.ts b/addons/docs/src/blocks/enhanceSource.test.ts index 4f977884858a..695e66abad1d 100644 --- a/addons/docs/src/blocks/enhanceSource.test.ts +++ b/addons/docs/src/blocks/enhanceSource.test.ts @@ -11,8 +11,6 @@ const emptyContext: StoryContext = { parameters: {}, }; -const transformSource = (src?: string) => (src ? `formatted: ${src}` : 'no src'); - describe('addon-docs enhanceSource', () => { describe('no source loaded', () => { const baseContext = emptyContext; @@ -20,6 +18,7 @@ describe('addon-docs enhanceSource', () => { expect(enhanceSource(baseContext)).toBeNull(); }); it('transformSource', () => { + const transformSource = (src?: string) => (src ? `formatted: ${src}` : 'no src'); const parameters = { ...baseContext.parameters, docs: { transformSource } }; expect(enhanceSource({ ...baseContext, parameters })).toBeNull(); }); @@ -35,11 +34,23 @@ describe('addon-docs enhanceSource', () => { }); }); it('transformSource', () => { + const transformSource = (src?: string) => (src ? `formatted: ${src}` : 'no src'); const parameters = { ...baseContext.parameters, docs: { transformSource } }; expect(enhanceSource({ ...baseContext, parameters }).docs.source).toEqual({ code: 'formatted: storySource.source', }); }); + it('receives StoryContext as second argument', () => { + const transformSource = jest.fn(); + const parameters = { ...baseContext.parameters, docs: { transformSource } }; + const context = { ...baseContext, parameters }; + enhanceSource(context); + expect(transformSource).toHaveBeenCalledWith( + baseContext.parameters.storySource.source, + baseContext.id, + context + ); + }); }); describe('storysource source loaded w/ locationsMap', () => { const baseContext = { @@ -57,11 +68,19 @@ describe('addon-docs enhanceSource', () => { expect(enhanceSource(baseContext)).toEqual({ docs: { source: { code: 'Source' } } }); }); it('transformSource', () => { + const transformSource = (src?: string) => (src ? `formatted: ${src}` : 'no src'); const parameters = { ...baseContext.parameters, docs: { transformSource } }; expect(enhanceSource({ ...baseContext, parameters }).docs.source).toEqual({ code: 'formatted: Source', }); }); + it('receives StoryContext as second argument', () => { + const transformSource = jest.fn(); + const parameters = { ...baseContext.parameters, docs: { transformSource } }; + const context = { ...baseContext, parameters }; + enhanceSource(context); + expect(transformSource).toHaveBeenCalledWith('Source', context.id, context); + }); }); describe('custom docs.source provided', () => { const baseContext = { @@ -75,9 +94,21 @@ describe('addon-docs enhanceSource', () => { expect(enhanceSource(baseContext)).toBeNull(); }); it('transformSource', () => { + const transformSource = (src?: string) => (src ? `formatted: ${src}` : 'no src'); const { source } = baseContext.parameters.docs; const parameters = { ...baseContext.parameters, docs: { source, transformSource } }; expect(enhanceSource({ ...baseContext, parameters })).toBeNull(); }); + it('receives StoryContext as second argument', () => { + const transformSource = jest.fn(); + const parameters = { ...baseContext.parameters, docs: { transformSource } }; + const context = { ...baseContext, parameters }; + enhanceSource(context); + expect(transformSource).toHaveBeenCalledWith( + context.parameters.storySource.source, + context.id, + context + ); + }); }); }); diff --git a/addons/docs/src/blocks/enhanceSource.ts b/addons/docs/src/blocks/enhanceSource.ts index c6e10a716e82..23e04ff83a11 100644 --- a/addons/docs/src/blocks/enhanceSource.ts +++ b/addons/docs/src/blocks/enhanceSource.ts @@ -54,7 +54,7 @@ export const enhanceSource = (context: StoryContext): Parameters => { } const input = extract(id, storySource); - const code = transformSource ? transformSource(input, id) : input; + const code = transformSource ? transformSource(input, id, context) : input; return { docs: combineParameters(docs, { source: { code } }) }; }; diff --git a/examples/html-kitchen-sink/stories/__snapshots__/button.stories.storyshot b/examples/html-kitchen-sink/stories/__snapshots__/button.stories.storyshot index 629692365089..1ee068c6b695 100644 --- a/examples/html-kitchen-sink/stories/__snapshots__/button.stories.storyshot +++ b/examples/html-kitchen-sink/stories/__snapshots__/button.stories.storyshot @@ -6,6 +6,12 @@ exports[`Storyshots Demo Button 1`] = ` `; +exports[`Storyshots Demo Button With Custom Source Code 1`] = ` + +`; + exports[`Storyshots Demo Effect 1`] = ` `; From 05735b6e87b8fdd257ace0815a4d1cd9f999c532 Mon Sep 17 00:00:00 2001 From: Nikki Reece Date: Tue, 1 Sep 2020 08:17:38 -0500 Subject: [PATCH 3/3] test with one test instead of three --- addons/docs/src/blocks/enhanceSource.test.ts | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/addons/docs/src/blocks/enhanceSource.test.ts b/addons/docs/src/blocks/enhanceSource.test.ts index 695e66abad1d..7894c5cd6bb2 100644 --- a/addons/docs/src/blocks/enhanceSource.test.ts +++ b/addons/docs/src/blocks/enhanceSource.test.ts @@ -74,13 +74,6 @@ describe('addon-docs enhanceSource', () => { code: 'formatted: Source', }); }); - it('receives StoryContext as second argument', () => { - const transformSource = jest.fn(); - const parameters = { ...baseContext.parameters, docs: { transformSource } }; - const context = { ...baseContext, parameters }; - enhanceSource(context); - expect(transformSource).toHaveBeenCalledWith('Source', context.id, context); - }); }); describe('custom docs.source provided', () => { const baseContext = { @@ -99,16 +92,5 @@ describe('addon-docs enhanceSource', () => { const parameters = { ...baseContext.parameters, docs: { source, transformSource } }; expect(enhanceSource({ ...baseContext, parameters })).toBeNull(); }); - it('receives StoryContext as second argument', () => { - const transformSource = jest.fn(); - const parameters = { ...baseContext.parameters, docs: { transformSource } }; - const context = { ...baseContext, parameters }; - enhanceSource(context); - expect(transformSource).toHaveBeenCalledWith( - context.parameters.storySource.source, - context.id, - context - ); - }); }); });