import { fileURLToPath } from 'node:url'
import { defineConfig } from 'vitest/config'
import { defineVitestProject } from '@nuxt/test-utils/config'

const rootDir = fileURLToPath(new URL('.', import.meta.url))

export default defineConfig({
  test: {
    projects: [
      // Pure logic: composables with no Nuxt-runtime dependency, and Nitro
      // server routes. No Nuxt auto-import transform here, so `readBody`,
      // `useRuntimeConfig`, etc. can be stubbed directly via vi.stubGlobal.
      {
        resolve: {
          alias: {
            '~': rootDir,
            '@': rootDir,
          },
        },
        test: {
          name: 'node',
          environment: 'node',
          include: ['server/**/*.test.ts', 'composables/useSeasonCountdown.test.ts'],
        },
      },
      // Anything that needs the real Nuxt runtime (auto-imports, useState,
      // components).
      await defineVitestProject({
        test: {
          name: 'nuxt',
          environment: 'nuxt',
          include: ['components/**/*.test.ts', 'composables/useContactModal.test.ts'],
          exclude: ['composables/useSeasonCountdown.test.ts'],
        },
      }),
    ],
  },
})
