# Générer la DB de test et charger les fixtures

## Regénérer le SQL de création de la DB de test

Pour regénérer le SQL de la base de données de test, suivez ces étapes :

1. Modifier les variable d'env dans **ap2i**

   ```bash
   php bin/console ot:setup:env --host=ci
   ls -l .env.local
   ```   

   Vérifiez que vous avez bien le contenu de /env/.env.staging dans .env.local

2. Connectez-vous à MySQL dans le docker **mariaDb** :

   ```bash
   docker exec -it db bash
   nano create-test-database.sh
   ```

   copier ce fichier dans "create-test-database.sh"

      
   ```bash

   DB_USER="root"
   DB_PASSWORD="mysql660"
   DB_HOST="127.0.0.1"
   DB_PORT="3306"
   DB_NAME="opentalent"
   DB_TEST_NAME="opentalent_test"

   echo "Dropping test database if it exists..."
   mysql --user=$DB_USER --password=$DB_PASSWORD --host=$DB_HOST --port=$DB_PORT -e "DROP DATABASE IF EXISTS $DB_TEST_NAME;"

   echo "Dumping schema from the main database..."
   mysqldump --user=$DB_USER --password=$DB_PASSWORD --host=$DB_HOST --port=$DB_PORT --default-character-set=utf8 --single-transaction=TRUE --no-data --skip-triggers "$DB_NAME" | sed 's/ AUTO_INCREMENT=[0-9]*//g' > opentalent_test.sql

   echo "Creating test database..."
   mysql --user=$DB_USER --password=$DB_PASSWORD --host=$DB_HOST --port=$DB_PORT -e "CREATE DATABASE $DB_TEST_NAME;"

   echo "Importing schema into the test database..."
   mysql --user=$DB_USER --password=$DB_PASSWORD --host=$DB_HOST --port=$DB_PORT -D $DB_TEST_NAME < opentalent_test.sql

   echo "Database setup completed."
   ```

   Ne pas faire attention à l'erreur _ERROR 1305 (42000) at line 8394: FUNCTION opentalent_test.init_var_session does not exist_

   Un fichier opentalent_test.sql est alors créé à la racine du projet ap2i
   ![alt text](image-1.png)


3. Détecter les erreurs dans les tests dans **ap2i** (phpunit ne les logs pas) :
   ```bash
   find tests/Application -name '*.php' -exec php -l {} \;
   ```


4. Regénérer les vues et jouer les fixtures dans **ap2i**

   ```bash
   bin/console  doctrine:schema:update
   bin/console --env=staging d:f:l
   ```

3. Pour lancer les tests (dans **ap2i**)

   ```bash
   chmod +x run_test.sh
   ./application_tests.sh
   ```


   Note : Les tests sont joués de façon isolé