From 7e1cfbfdc2358ee0d4cca60c5efce2736dd0efd3 Mon Sep 17 00:00:00 2001 From: YeonGyu-Kim Date: Sat, 30 May 2026 16:04:45 +0900 Subject: [PATCH] refactor(testing): extract mock restore exports --- src/testing/module-mock-lifecycle.ts | 29 +--------------------- src/testing/module-mock-restore-exports.ts | 27 ++++++++++++++++++++ 2 files changed, 28 insertions(+), 28 deletions(-) create mode 100644 src/testing/module-mock-restore-exports.ts diff --git a/src/testing/module-mock-lifecycle.ts b/src/testing/module-mock-lifecycle.ts index abeeb15a8..992888136 100644 --- a/src/testing/module-mock-lifecycle.ts +++ b/src/testing/module-mock-lifecycle.ts @@ -1,6 +1,7 @@ import { createRequire } from "node:module" import { fileURLToPath } from "node:url" import { defaultGetCallerStack, resolveCallerUrlFromStack } from "./module-mock-stack" +import { createRestoreExports } from "./module-mock-restore-exports" type MockModuleFactory = () => Record @@ -40,34 +41,6 @@ function toError(error: unknown): Error { return error instanceof Error ? error : new Error(String(error)) } -function isModuleExports(moduleValue: unknown): moduleValue is Record { - return moduleValue !== null && typeof moduleValue === "object" -} - -function isModuleNamespaceObject(moduleValue: Record): boolean { - return Object.prototype.toString.call(moduleValue) === "[object Module]" -} - -function createRestoreExports(moduleValue: unknown): Record { - if (typeof moduleValue === "function") { - const functionExports = Object.assign({}, moduleValue) - return { - ...functionExports, - default: moduleValue, - } - } - - if (isModuleExports(moduleValue)) { - if (isModuleNamespaceObject(moduleValue)) { - return { ...moduleValue } - } - - return moduleValue - } - - return { default: moduleValue } -} - function resolveWithBun(specifier: string, callerUrl: string): string { const callerDirectory = fileURLToPath(new URL(".", callerUrl)) return Bun.resolveSync(specifier, callerDirectory) diff --git a/src/testing/module-mock-restore-exports.ts b/src/testing/module-mock-restore-exports.ts new file mode 100644 index 000000000..6b4e45796 --- /dev/null +++ b/src/testing/module-mock-restore-exports.ts @@ -0,0 +1,27 @@ +function isModuleExports(moduleValue: unknown): moduleValue is Record { + return moduleValue !== null && typeof moduleValue === "object" +} + +function isModuleNamespaceObject(moduleValue: Record): boolean { + return Object.prototype.toString.call(moduleValue) === "[object Module]" +} + +export function createRestoreExports(moduleValue: unknown): Record { + if (typeof moduleValue === "function") { + const functionExports = Object.assign({}, moduleValue) + return { + ...functionExports, + default: moduleValue, + } + } + + if (isModuleExports(moduleValue)) { + if (isModuleNamespaceObject(moduleValue)) { + return { ...moduleValue } + } + + return moduleValue + } + + return { default: moduleValue } +}