name: CI - Intégration continue

# Intégration continue : à chaque push et chaque pull request, on vérifie
# automatiquement la qualité du code (Laravel Pint) puis on exécute les tests
# automatisés (PHPUnit). Un déploiement (voir deploy.yml) ne doit se faire que
# si cette étape est au vert.

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

jobs:
  quality-and-tests:
    runs-on: ubuntu-latest

    steps:
      - name: Récupération du code
        uses: actions/checkout@v4

      - name: Installation de PHP 8.2
        uses: shivammathur/setup-php@v2
        with:
          php-version: '8.2'
          extensions: pdo_mysql, mbstring, exif, pcntl, bcmath, gd
          coverage: none

      - name: Cache des dépendances Composer
        uses: actions/cache@v4
        with:
          path: vendor
          key: composer-${{ hashFiles('composer.lock') }}

      - name: Installation des dépendances
        run: composer install --no-interaction --prefer-dist --optimize-autoloader

      - name: Préparation de l'environnement de test
        run: |
          cp .env.example .env
          php artisan key:generate

      - name: Vérification du style de code (Laravel Pint)
        run: vendor/bin/pint --test

      - name: Exécution des tests automatisés (PHPUnit)
        env:
          DB_CONNECTION: sqlite
          DB_DATABASE: ':memory:'
        run: php artisan test
