name: Test & lint PHP stuff

on:
  push:
    branches: [ "main" ]
  pull_request:
    branches: [ "main" ]

jobs:
  test-and-lint-php:
    name: Test & lint PHP stuff
    runs-on: ubuntu-20.04
    services:
      pgsql:
        image: postgres:13
        env:
          POSTGRES_DB: toby
          POSTGRES_USER: toby
          POSTGRES_PASSWORD: password
          PGPASSWORD: password
        ports:
          - 5432:5432

    steps:
      - uses: actions/checkout@v2

      - name: Validate composer.json and composer.lock
        run: composer validate

      - name: Cache dependencies
        uses: actions/cache@v2
        with:
          path: vendor
          key: ${{ runner.os }}-composer-dependencies-${{ hashFiles('composer.lock') }}
          restore-keys: ${{ runner.os }}-composer-dependencies

      - name: Setup PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: 8.1
          extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite, intl
          coverage: none

      - name: Install Composer dependencies
        run: composer install --prefer-dist --no-interaction --no-suggest

      - name: Run PHP linter
        run: composer cs

      - name: Execute tests
        run: php artisan test --env=ci
