name: Pest Tests

on: [push, pull_request]

permissions:
  contents: read

jobs:
  pest_tests:
    runs-on: ${{ matrix.operating-systems }}

    strategy:
      matrix:
        operating-systems: [ubuntu-latest]
        php-versions: ['8.2', '8.3']

    name: PHP ${{ matrix.php-versions }} test on ${{ matrix.operating-systems }}

    services:
      mysql:
        image: mysql:8.0
        env:
          MYSQL_ROOT_PASSWORD: root
          MYSQL_DATABASE: bagisto
        ports:
          - 3306
        options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=5

    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Setup PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: ${{ matrix.php-versions }}
          extensions: curl, fileinfo, gd, intl, mbstring, openssl, pdo, pdo_mysql, tokenizer, zip
          ini-values: error_reporting=E_ALL
          tools: composer:v2

      - name: Running Composer Install
        run: composer install

      - name: Setting Environment
        run: |
          cp .env.example .env
          sed -i "s|^\(APP_ENV=\s*\).*$|\1testing|" .env
          sed -i "s|^\(DB_HOST=\s*\).*$|\1127.0.0.1|" .env
          sed -i "s|^\(DB_PORT=\s*\).*$|\1${{ job.services.mysql.ports['3306'] }}|" .env
          sed -i "s|^\(DB_DATABASE=\s*\).*$|\1bagisto|" .env
          sed -i "s|^\(DB_USERNAME=\s*\).*$|\1root|" .env
          sed -i "s|^\(DB_PASSWORD=\s*\).*$|\1root|" .env
          cat .env

      - name: Running Bagisto Installer
        run: php artisan bagisto:install --skip-env-check --skip-admin-creation

      - name: Running Pest Test
        run: vendor/bin/pest --parallel --colors=always
