Skip to content

Commit 43d8c72

Browse files
letsbelopezDoesnt Matter
andauthored
fix: return theme declaration file from render func (#1023)
Co-authored-by: Doesnt Matter <[email protected]>
1 parent f7b1b60 commit 43d8c72

File tree

3 files changed

+26
-6
lines changed

3 files changed

+26
-6
lines changed

packages/codegen-ui-react/lib/__tests__/__snapshots__/react-theme-studio-template-renderer.test.ts.snap

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,12 @@ export default createTheme({
9191
"
9292
`;
9393

94+
exports[`react theme renderer tests theme should render the theme with ES5 2`] = `
95+
"declare const _default: any;
96+
export default _default;
97+
"
98+
`;
99+
94100
exports[`react theme renderer tests theme should render the theme with TSX 1`] = `
95101
"/* eslint-disable */
96102
import { createTheme } from \\"@aws-amplify/ui-react\\";

packages/codegen-ui-react/lib/__tests__/react-theme-studio-template-renderer.test.ts

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,14 @@ function generateWithThemeRenderer(
2525
jsonFile: string,
2626
renderConfig: ReactRenderConfig = {},
2727
options?: ReactThemeStudioTemplateRendererOptions,
28-
): string {
28+
) {
2929
const rendererFactory = new StudioTemplateRendererFactory(
3030
(theme: StudioTheme) => new ReactThemeStudioTemplateRenderer(theme, renderConfig, options),
3131
);
32-
return rendererFactory.buildRenderer(loadSchemaFromJSONFile(jsonFile)).renderComponent().componentText;
32+
const { componentText, declaration } = rendererFactory
33+
.buildRenderer(loadSchemaFromJSONFile(jsonFile))
34+
.renderComponent();
35+
return { componentText, declaration };
3336
}
3437

3538
function generateThemeObject(jsonFile: string): any {
@@ -46,19 +49,28 @@ function generateThemeObject(jsonFile: string): any {
4649
describe('react theme renderer tests', () => {
4750
describe('theme', () => {
4851
it('should render the theme', () => {
49-
expect(generateWithThemeRenderer('theme')).toMatchSnapshot();
52+
expect(generateWithThemeRenderer('theme').componentText).toMatchSnapshot();
5053
});
5154

5255
it('should render the theme with TSX', () => {
53-
expect(generateWithThemeRenderer('theme', { script: ScriptKind.TSX })).toMatchSnapshot();
56+
const { componentText, declaration } = generateWithThemeRenderer('theme', { script: ScriptKind.TSX });
57+
expect(componentText).toMatchSnapshot();
58+
expect(declaration).toBeUndefined();
5459
});
5560

5661
it('should render the theme with ES5', () => {
57-
expect(generateWithThemeRenderer('theme', { target: ScriptTarget.ES5, script: ScriptKind.JS })).toMatchSnapshot();
62+
const { componentText, declaration } = generateWithThemeRenderer('theme', {
63+
target: ScriptTarget.ES5,
64+
script: ScriptKind.JS,
65+
renderTypeDeclarations: true,
66+
});
67+
expect(componentText).toMatchSnapshot();
68+
expect(declaration).toBeDefined();
69+
expect(declaration).toMatchSnapshot();
5870
});
5971

6072
it('should render the default theme', () => {
61-
expect(generateWithThemeRenderer('theme', {}, { renderDefaultTheme: true })).toMatchSnapshot();
73+
expect(generateWithThemeRenderer('theme', {}, { renderDefaultTheme: true }).componentText).toMatchSnapshot();
6274
});
6375
});
6476

packages/codegen-ui-react/lib/react-theme-studio-template-renderer.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ export class ReactThemeStudioTemplateRenderer extends StudioTemplateRenderer<
5454
ReactOutputManager,
5555
{
5656
componentText: string;
57+
declaration: string | undefined;
5758
renderComponentToFilesystem: (outputPath: string) => Promise<void>;
5859
}
5960
> {
@@ -87,6 +88,7 @@ export class ReactThemeStudioTemplateRenderer extends StudioTemplateRenderer<
8788

8889
return {
8990
componentText: transpiledComponentText,
91+
declaration,
9092
renderComponentToFilesystem: async (outputPath: string) => {
9193
await this.renderComponentToFilesystem(transpiledComponentText)(this.fileName)(outputPath);
9294
if (declaration) {

0 commit comments

Comments
 (0)