nitro-test-utils
Version:
Testing environment and utilities for Nitro
71 lines (68 loc) • 1.74 kB
JavaScript
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 };