import path from 'path'
import { fileURLToPath } from 'url'
import { defineConfig } from 'vitest/config'
import svgr from 'vite-plugin-svgr'

const __dirname = path.dirname( fileURLToPath( import.meta.url ) )

// Standalone unit-test config (does NOT extend the Vite build config, so the
// production shim aliases / plugins don't run in the test env). Only plain
// path aliases actually used by tests are declared here — not the
// production-only shims (wp-element, wp-i18n, …).
export default defineConfig({
  // Editor component modules import SVGs as React components (`?react`).
  plugins: [ svgr() ],
  resolve: {
    alias: [
      {
        find: '@epicformbuilder/common',
        replacement: path.resolve( __dirname, 'src/common' ),
      },
      // Public form aliases, needed to import src/public/scenes/Form/index.jsx directly.
      { find: '@epicformbuilder/public/data', replacement: path.resolve( __dirname, 'src/public/data' ) },
      { find: '@epicformbuilder/public/form/components', replacement: path.resolve( __dirname, 'src/public/scenes/Form/components' ) },
      // Admin editor aliases, needed by the editor registry tests.
      { find: '@epicformbuilder/admin/data', replacement: path.resolve( __dirname, 'src/admin/data' ) },
      { find: '@epicformbuilder/admin/hooks', replacement: path.resolve( __dirname, 'src/admin/hooks' ) },
      { find: '@epicformbuilder/admin/images', replacement: path.resolve( __dirname, 'src/admin/images' ) },
      { find: '@epicformbuilder/admin/editor/components', replacement: path.resolve( __dirname, 'src/admin/scenes/Editor/components' ) },
    ],
  },
  test: {
    environment: 'jsdom',
    include: ['src/**/*.test.ts'],
  },
})
