name: CI
on:
    pull_request: null
    push:
        branches:
            - master
jobs:
    tests:
        runs-on: ubuntu-latest
        services:
            mysql:
                image: mysql:5.7
                env:
                    MYSQL_ALLOW_EMPTY_PASSWORD: false
                    MYSQL_ROOT_PASSWORD: kimai
                    MYSQL_DATABASE: kimai
                ports:
                    - 3306/tcp
                options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
        strategy:
            matrix:
                php: ['7.2', '7.3', '7.4']

        name: Tests - PHP ${{ matrix.php }}
        steps:
            -   uses: actions/checkout@v2
            -   uses: shivammathur/setup-php@v2
                with:
                    php-version: ${{ matrix.php }}
                    coverage: none
                    extensions: mbstring, xml, ctype, iconv, intl, pdo_sqlite, mysql, zip, gd, ldap
            -   run: |
                    composer install --no-progress
                    composer require laminas/laminas-ldap
            -   name: Setup problem matchers for PHPUnit
                run: echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json"
            -   name: Run unit tests
                run: composer kimai:tests-unit
            -   name: Run migrations on MySQL
                run: |
                    bin/console doctrine:database:create --if-not-exists -n
                    bin/console doctrine:migrations:migrate -n
                    bin/console doctrine:migrations:migrate first -n
                env:
                    DATABASE_URL: mysql://root:kimai@127.0.0.1:${{ job.services.mysql.ports['3306'] }}/kimai
                    APP_ENV: dev
                    MAILER_URL: null://localhost
            -   name: Run migrations on SQLite
                run: |
                    bin/console doctrine:database:create -n
                    bin/console doctrine:migrations:migrate -n
                    bin/console doctrine:migrations:migrate first -n
                env:
                    DATABASE_URL: sqlite:///%kernel.project_dir%/var/data/kimai_migrations.sqlite
                    APP_ENV: dev
                    MAILER_URL: null://localhost
            -   name: Run integration tests
                run: composer kimai:tests-integration
