UNPKG

nitro-test-utils

Version:
71 lines (68 loc) 1.74 kB
import { ofetch } from 'ofetch'; import { inject } from 'vitest'; import { i as injectTestContext, c as createTestContext, s as startServer, a as stopServer, b as clearTestContext } from './shared/nitro-test-utils.Dm9MOO54.mjs'; import 'listhen'; import 'nitropack'; import 'pathe'; import 'node:fs'; import 'node:process'; import 'dotenv'; function createFetch() { const serverUrl = injectServerUrl(); return ofetch.create({ baseURL: serverUrl, ignoreResponseError: true, redirect: "manual", headers: { accept: "application/json" } }); } async function $fetchRaw(path, options) { const serverUrl = injectServerUrl(); const localFetch = ofetch.create({ baseURL: serverUrl, ignoreResponseError: true, redirect: "manual", headers: { accept: "application/json" } }); const response = await localFetch.raw( path, options ); Object.defineProperty(response, "data", { get() { return response._data; } }); return response; } function injectServerUrl() { const ctx = injectTestContext(); let serverUrl = ctx?.server?.url; if (!serverUrl) { serverUrl = inject("server")?.url; } if (!serverUrl) { throw new Error("Nitro server is not running."); } return serverUrl; } async function setup(options = {}) { const vitest = await import('vitest'); const server = vitest.inject("server"); if (server) { throw new Error("Nitro server is already running in global setup."); } await createTestContext(options); vitest.beforeAll(async () => { await startServer(); }); vitest.afterAll(async () => { await stopServer(); clearTestContext(); }); } export { $fetchRaw, createFetch, injectServerUrl, setup };