#!/usr/bin/env bash
# Prepare l'environnement de test 100% en conteneur puis lance la suite.
set -euo pipefail
cd /app

: "${APP_KEY:?APP_KEY doit etre fournie par le compose}"

# .env absent du build context (hermetique : /.env et /.env.testing sont dans
# .dockerignore, jamais le .env reel de l'hote). Toute la config vient des
# variables d'env fournies par compose. Dotenv::safeLoad() emet neanmoins un
# PHP Warning si le fichier n'existe pas du tout -> fichier vide pour le
# silencer (sinon Pest degrade TOUS les tests en "warning" au lieu de pass/fail).
touch .env

php artisan passport:keys --force

# Client d'acces personnel Passport : donnee de reference requise par les tests
# auth/2FA (l'hote l'a via le seeder admin ; ici la base tmpfs est neuve).
php artisan passport:client --personal --no-interaction

# Piege public/build : manifeste Vite stub (tests Feature rendent les layouts @vite).
mkdir -p public/build/.vite
MANIFEST='{
  "resources/js/app.jsx":    {"file":"assets/app.js",  "isEntry":true, "src":"resources/js/app.jsx"},
  "resources/sass/app.scss": {"file":"assets/app.css", "isEntry":true, "src":"resources/sass/app.scss"}
}'
printf '%s' "$MANIFEST" > public/build/manifest.json
printf '%s' "$MANIFEST" > public/build/.vite/manifest.json

# Le schema (possede par admin) est pre-charge par le service mysql via initdb
# (docker/test/schema.sql). Front n'a aucune migration propre -> rien a migrer ici.
exec php artisan test "$@"
