name: PHP Tests

on:
  pull_request:
  push:
    branches:
      - master

jobs:
  unit-tests:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        php-versions: ['8.1', '8.2', '8.3']
        nextcloud-versions: ['stable29', 'stable30', 'stable31']
    name: php${{ matrix.php-versions }} on ${{ matrix.nextcloud-versions }} unit tests
    env:
      CI: true
      XDEBUG_MODE: coverage
    steps:
    - name: Set up php${{ matrix.php-versions }}
      uses: shivammathur/setup-php@master
      with:
        php-version: ${{ matrix.php-versions }}
        extensions: ctype, curl, dom, gd, gmp, iconv, intl, json, mbstring, openssl, pdo_sqlite, posix, sqlite, xml, zip
        coverage: xdebug
    - name: Checkout Nextcloud
      run: git clone https://github.com/nextcloud/server.git --recursive --depth 1 -b ${{ matrix.nextcloud-versions }} nextcloud
    - name: Install Nextcloud
      run: php -f nextcloud/occ maintenance:install --database-name oc_autotest --database-user oc_autotest --admin-user admin --admin-pass admin --database sqlite --database-pass=''
    - name: Checkout the app
      uses: actions/checkout@master
      with:
        path: nextcloud/apps/bbb
    - name: Update test stub
      working-directory: nextcloud/apps/bbb
      run: composer update friendsofphp/php-cs-fixer nextcloud/ocp phpunit/phpunit vimeo/psalm -W
    - name: Install dependencies
      working-directory: nextcloud/apps/bbb
      run: composer install
    - name: Enable app
      run: php -f nextcloud/occ app:enable bbb
    - name: Run tests
      working-directory: nextcloud/apps/bbb
      run: composer run test
