Files
creator-hub/web/tests/helpers/page-state.cjs
T
rogee 51091cf0c5
douyin-release-gate / verify (push) Failing after 18m33s
fix: preserve pagination and filters across list navigation
2026-10-07 14:41:11 +08:00

33 lines
1.2 KiB
JavaScript

const { readFileSync } = require('node:fs');
const { resolve } = require('node:path');
const vm = require('node:vm');
const ts = require('typescript');
function load(relativePath, mocks, globals = {}) {
const filename = resolve(__dirname, '../../src', relativePath);
const exports = {};
const code = ts.transpileModule(readFileSync(filename, 'utf8'), {
compilerOptions: { module: ts.ModuleKind.CommonJS, target: ts.ScriptTarget.ES2022 },
}).outputText;
vm.runInNewContext(code, {
exports, JSON, console, ...globals,
require(name) {
if (!(name in mocks)) throw new Error(`Unexpected page-state dependency: ${name}`);
return mocks[name];
},
}, { filename });
return exports;
}
function loadPageState(react, { storage = new Map(), pathname = () => '/test' } = {}) {
return load('hooks/usePageState.ts', { react, '@umijs/max': { useLocation: () => ({ pathname: pathname() }) } }, {
sessionStorage: { getItem: key => storage.get(key) ?? null, setItem: (key, value) => storage.set(key, value) },
});
}
function loadTable(react, pageState) {
return load('utils/table.ts', { react, '@/hooks/usePageState': pageState, '@ant-design/pro-components': {} });
}
module.exports = { loadPageState, loadTable };