name: Test CI

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

  workflow_dispatch:

env:
  TEST_USERNAME: ${{ secrets.TEST_USERNAME }}
  TEST_PASSWORD: ${{ secrets.TEST_PASSWORD }}
  TEST_MERCHANT_ID: ${{ secrets.TEST_MERCHANT_ID }}
  TEST_WEGETFINANCING_URL: ${{ secrets.TEST_WEGETFINANCING_URL }}
  TEST_WEGETFINANCING_URL_V3: ${{ secrets.TEST_WEGETFINANCING_URL_V3 }}
  CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }}
  MERCHANT_TOKEN_EMPTY: ${{ secrets.MERCHANT_TOKEN_EMPTY }}
  MERCHANT_TOKEN_SUCCESS: ${{ secrets.MERCHANT_TOKEN_SUCCESS }}
  MERCHANT_TOKEN_ERROR: ${{ secrets.MERCHANT_TOKEN_ERROR }}

jobs:

  tests:
    name: Tests
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        php-version:
          - "8.0"
          - "8.1"
          - "8.2"
    steps:
      - uses: actions/checkout@v3
      - name: Setup PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: ${{ matrix.php-version }}
          coverage: xdebug
      - name: Trim dependency
        run: composer remove --dev phpmd/phpmd phpstan/phpstan squizlabs/php_codesniffer friendsofphp/php-cs-fixer
      - name: Validate composer.json and composer.lock
        run: composer validate
      - name: Install dependencies
        run: composer install --prefer-dist --no-progress --no-suggest
      - name: Prepare for sending code coverage
        run: |
          curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
          chmod +x ./cc-test-reporter
          ./cc-test-reporter before-build
      - name: Run test suite and send coverage
        run: |
          php --version
          composer test
      - name: Send code coverage
        run: ./cc-test-reporter after-build -t clover
