From c6f4c2e3e8aab25884797cf2b8a5839fd97849a4 Mon Sep 17 00:00:00 2001 From: shellscape Date: Mon, 4 Nov 2024 11:41:31 -0500 Subject: [PATCH] chore(repo): add additional tests for config loading from parent directories, and picking up disableDefaultStyle in render from config --- .../dotdir/.snapshots/load-mjs.test.ts.snap | 14 --- .../.snapshots/parent-dir.test.ts.snap | 93 +++++++++++++++++++ .../parent-dir/child-dir/parent-dir.test.ts | 9 ++ .../load/parent-dir/jsx-email.config.mjs | 5 + .../.snapshots/config-render.test.tsx.snap | 10 ++ .../test/config/render/config-render.test.tsx | 17 ++++ .../test/config/render/jsx-email.config.mjs | 5 + .../test/render/fixtures/components.tsx | 9 ++ 8 files changed, 148 insertions(+), 14 deletions(-) delete mode 100644 packages/jsx-email/test/config/load/dotdir/.snapshots/load-mjs.test.ts.snap create mode 100644 packages/jsx-email/test/config/load/parent-dir/child-dir/.snapshots/parent-dir.test.ts.snap create mode 100644 packages/jsx-email/test/config/load/parent-dir/child-dir/parent-dir.test.ts create mode 100644 packages/jsx-email/test/config/load/parent-dir/jsx-email.config.mjs create mode 100644 packages/jsx-email/test/config/render/.snapshots/config-render.test.tsx.snap create mode 100644 packages/jsx-email/test/config/render/config-render.test.tsx create mode 100644 packages/jsx-email/test/config/render/jsx-email.config.mjs create mode 100644 packages/jsx-email/test/render/fixtures/components.tsx diff --git a/packages/jsx-email/test/config/load/dotdir/.snapshots/load-mjs.test.ts.snap b/packages/jsx-email/test/config/load/dotdir/.snapshots/load-mjs.test.ts.snap deleted file mode 100644 index 88e54708..00000000 --- a/packages/jsx-email/test/config/load/dotdir/.snapshots/load-mjs.test.ts.snap +++ /dev/null @@ -1,14 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`loadConfig → dotdir > loadConfig 1`] = ` -{ - "logLevel": "info", - "plugins": [], - "render": { - "disableDefaultStyle": false, - "minify": false, - "plainText": false, - "pretty": false, - }, -} -`; diff --git a/packages/jsx-email/test/config/load/parent-dir/child-dir/.snapshots/parent-dir.test.ts.snap b/packages/jsx-email/test/config/load/parent-dir/child-dir/.snapshots/parent-dir.test.ts.snap new file mode 100644 index 00000000..72029a47 --- /dev/null +++ b/packages/jsx-email/test/config/load/parent-dir/child-dir/.snapshots/parent-dir.test.ts.snap @@ -0,0 +1,93 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`loadConfig → parent dir > loadConfig 1`] = ` +{ + "logLevel": "info", + "plugins": [ + { + "log": LogLevel { + "currentLevel": 2, + "debug": [Function], + "error": [Function], + "info": [Function], + "log": [Function], + "methodFactory": LogFactory { + "options": { + "level": [Function], + "name": [Function], + "ready": { + "promise": Promise {}, + "reject": [Function], + "resolve": [Function], + }, + "template": "[{{time}}] jsx-email ∵ root/minify {{level}} ", + "time": [Function], + }, + "ready": { + "promise": Promise {}, + "reject": [Function], + "resolve": [Function], + }, + Symbol(log-instance): [Circular], + Symbol(log-levels): { + "DEBUG": 1, + "ERROR": 4, + "INFO": 2, + "SILENT": 5, + "TRACE": 0, + "WARN": 3, + }, + }, + "name": "dot-log:∵ root/minify", + "options": { + "factory": LogFactory { + "options": { + "level": [Function], + "name": [Function], + "ready": { + "promise": Promise {}, + "reject": [Function], + "resolve": [Function], + }, + "template": "[{{time}}] jsx-email ∵ root/minify {{level}} ", + "time": [Function], + }, + "ready": { + "promise": Promise {}, + "reject": [Function], + "resolve": [Function], + }, + Symbol(log-instance): [Circular], + Symbol(log-levels): { + "DEBUG": 1, + "ERROR": 4, + "INFO": 2, + "SILENT": 5, + "TRACE": 0, + "WARN": 3, + }, + }, + "id": "dot-log:∵ root/minify", + "level": "info", + "name": "dot-log:∵ root/minify", + "prefix": undefined, + }, + "trace": [Function], + "type": "LogLevel", + "warn": [Function], + }, + "name": "root/minify", + "process": [Function], + "symbol": Symbol(jsx-email/plugin), + }, + ], + "render": { + "disableDefaultStyle": true, + "inlineCss": false, + "minify": true, + "plainText": false, + "pretty": false, + }, + "symbol": Symbol(jsx-email/config), +} +`; diff --git a/packages/jsx-email/test/config/load/parent-dir/child-dir/parent-dir.test.ts b/packages/jsx-email/test/config/load/parent-dir/child-dir/parent-dir.test.ts new file mode 100644 index 00000000..9494007a --- /dev/null +++ b/packages/jsx-email/test/config/load/parent-dir/child-dir/parent-dir.test.ts @@ -0,0 +1,9 @@ +import { loadConfig } from '../../../../../src/config.js'; + +describe('loadConfig → parent dir', async () => { + test('loadConfig', async () => { + const config = await loadConfig(__dirname); + expect(config).toBeDefined(); + expect(config).toMatchSnapshot(); + }); +}); diff --git a/packages/jsx-email/test/config/load/parent-dir/jsx-email.config.mjs b/packages/jsx-email/test/config/load/parent-dir/jsx-email.config.mjs new file mode 100644 index 00000000..117f7b75 --- /dev/null +++ b/packages/jsx-email/test/config/load/parent-dir/jsx-email.config.mjs @@ -0,0 +1,5 @@ +import { defineConfig } from 'jsx-email/config'; + +export const config = defineConfig({ + render: { disableDefaultStyle: true, minify: true } +}); diff --git a/packages/jsx-email/test/config/render/.snapshots/config-render.test.tsx.snap b/packages/jsx-email/test/config/render/.snapshots/config-render.test.tsx.snap new file mode 100644 index 00000000..5a3a8597 --- /dev/null +++ b/packages/jsx-email/test/config/render/.snapshots/config-render.test.tsx.snap @@ -0,0 +1,10 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`config → render > render disableDefaultStyle from config 1`] = ` +" + + + + +" +`; diff --git a/packages/jsx-email/test/config/render/config-render.test.tsx b/packages/jsx-email/test/config/render/config-render.test.tsx new file mode 100644 index 00000000..da35246b --- /dev/null +++ b/packages/jsx-email/test/config/render/config-render.test.tsx @@ -0,0 +1,17 @@ +import React from 'react'; + +import { loadConfig } from '../../../src/config.js'; +import { render } from '../../../src/renderer/render.js'; +import { Template } from '../../render/fixtures/components.js'; + +// process.chdir(__dirname); + +describe('config → render', async () => { + test('render disableDefaultStyle from config', async () => { + // Note: load the config from the target directory first, so it'll be picked up on cache + // vitest makes it hard to change the workding directory due to workers use + await loadConfig(__dirname); + const result = await render(