diff --git a/tests/contact/cors.test.ts b/tests/contact/cors.test.ts index 26b863d..93f8ee8 100644 --- a/tests/contact/cors.test.ts +++ b/tests/contact/cors.test.ts @@ -1,5 +1,5 @@ import { describe, it, expect, vi } from "vitest"; -import { isOriginAllowed, setCorsHeaders } from "../../api/contact/cors.js"; +import { isOriginAllowed, setCorsHeaders } from "@/api/contact/cors.js"; import type { VercelRequest, VercelResponse } from "@vercel/node"; const makeReq = (origin?: string, method = "POST") => ({ diff --git a/tests/contact/email.test.ts b/tests/contact/email.test.ts index 6ba5b03..76555bc 100644 --- a/tests/contact/email.test.ts +++ b/tests/contact/email.test.ts @@ -1,8 +1,8 @@ import { vi, describe, it, expect, beforeEach } from "vitest"; import type { Resend } from "resend"; -import { getEmailConfig, sendEmail, type EmailConfig } from "../../api/contact/email.js"; -import type { Config } from "../../api/contact/config.js"; -import type { ContactBody } from "../../api/contact/types.js"; +import { getEmailConfig, sendEmail, type EmailConfig } from "@/api/contact/email.js"; +import type { Config } from "@/api/contact/config.js"; +import type { ContactBody } from "@/api/contact/types.js"; vi.mock("resend"); diff --git a/tests/contact/index.test.ts b/tests/contact/index.test.ts index bd7be11..ffe7de1 100644 --- a/tests/contact/index.test.ts +++ b/tests/contact/index.test.ts @@ -2,16 +2,16 @@ import { vi, describe, it, expect, beforeEach } from "vitest"; import type { VercelRequest, VercelResponse } from "@vercel/node"; vi.mock("@vercel/firewall", () => ({ checkRateLimit: vi.fn() })); -vi.mock("../../api/contact/cors.js", () => ({ setCorsHeaders: vi.fn(), isOriginAllowed: vi.fn() })); -vi.mock("../../api/contact/validation.js", () => ({ isValidBody: vi.fn() })); -vi.mock("../../api/contact/email.js", () => ({ getEmailConfig: vi.fn(), sendEmail: vi.fn() })); -vi.mock("../../api/contact/config.js", () => ({ config: { allowedOrigins: ["https://example.com"] } })); +vi.mock("@/api/contact/cors.js", () => ({ setCorsHeaders: vi.fn(), isOriginAllowed: vi.fn() })); +vi.mock("@/api/contact/validation.js", () => ({ isValidBody: vi.fn() })); +vi.mock("@/api/contact/email.js", () => ({ getEmailConfig: vi.fn(), sendEmail: vi.fn() })); +vi.mock("@/api/contact/config.js", () => ({ config: { allowedOrigins: ["https://example.com"] } })); import { checkRateLimit } from "@vercel/firewall"; -import { setCorsHeaders, isOriginAllowed } from "../../api/contact/cors.js"; -import { isValidBody } from "../../api/contact/validation.js"; -import { getEmailConfig, sendEmail } from "../../api/contact/email.js"; -import handler from "../../api/contact/index.js"; +import { setCorsHeaders, isOriginAllowed } from "@/api/contact/cors.js"; +import { isValidBody } from "@/api/contact/validation.js"; +import { getEmailConfig, sendEmail } from "@/api/contact/email.js"; +import handler from "@/api/contact/index.js"; const makeReq = (overrides: Partial = {}): VercelRequest => ({ headers: { origin: "https://example.com", "content-type": "application/json" }, diff --git a/tests/contact/validation.test.ts b/tests/contact/validation.test.ts index a812d73..6430448 100644 --- a/tests/contact/validation.test.ts +++ b/tests/contact/validation.test.ts @@ -1,5 +1,5 @@ import { describe, it, expect } from "vitest"; -import { EMAIL_REGEX, isValidBody } from "../../api/contact/validation.js"; +import { EMAIL_REGEX, isValidBody } from "@/api/contact/validation.js"; describe("EMAIL_REGEX", () => { const validate = (email: string) => EMAIL_REGEX.test(email); diff --git a/tsconfig.json b/tsconfig.json index 88800db..19cf6b6 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -43,7 +43,10 @@ "esModuleInterop": true, "skipLibCheck": true, "checkJs": false, - "noEmit": true + "noEmit": true, + "paths": { + "@/*": ["./*"] + } }, "include": [ "./api/**/*.ts" diff --git a/vitest.config.ts b/vitest.config.ts new file mode 100644 index 0000000..6864cae --- /dev/null +++ b/vitest.config.ts @@ -0,0 +1,23 @@ +import { defineConfig } from "vitest/config"; +import path from "path"; +import { fileURLToPath } from "node:url"; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); + +export default defineConfig({ + test: { + globals: false, + environment: "node", + include: ["tests/**/*.{test,spec}.{ts,tsx}"], + exclude: ["node_modules", "dist", ".vercel"], + coverage: { + provider: "v8", + }, + }, + resolve: { + alias: { + '@': path.resolve(__dirname, "./"), + }, + }, +})