diff options
Diffstat (limited to 'packages/integrations/node/test/test-utils.js')
-rw-r--r-- | packages/integrations/node/test/test-utils.js | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/packages/integrations/node/test/test-utils.js b/packages/integrations/node/test/test-utils.js new file mode 100644 index 000000000..4bd42d557 --- /dev/null +++ b/packages/integrations/node/test/test-utils.js @@ -0,0 +1,41 @@ +import { loadFixture as baseLoadFixture } from '../../../astro/test/test-utils.js'; +import httpMocks from 'node-mocks-http'; +import { EventEmitter } from 'events'; + +/** + * @typedef {import('../../../astro/test/test-utils').Fixture} Fixture + */ + +export function loadFixture(inlineConfig) { + if (!inlineConfig || !inlineConfig.root) + throw new Error("Must provide { root: './fixtures/...' }"); + + // resolve the relative root (i.e. "./fixtures/tailwindcss") to a full filepath + // without this, the main `loadFixture` helper will resolve relative to `packages/astro/test` + return baseLoadFixture({ + ...inlineConfig, + root: new URL(inlineConfig.root, import.meta.url).toString(), + }); +} + +export function createRequestAndResponse(reqOptions) { + let req = httpMocks.createRequest(reqOptions); + + let res = httpMocks.createResponse({ + eventEmitter: EventEmitter, + req + }); + + let done = toPromise(res); + + return { req, res, done }; +} + +export function toPromise(res) { + return new Promise(resolve => { + res.on('end', () => { + let chunks = res._getChunks(); + resolve(chunks); + }); + }); +} |