on: 
  push:
    branches:
      - v2
      
name: phpunit
jobs:
  phpunit:
    runs-on: ubuntu-latest
    env:
      DB_DATABASE1: ninja
      DB_USERNAME1: root
      DB_PASSWORD1: ninja
      DB_HOST1: '127.0.0.1'
      DB_DATABASE: ninja
      DB_USERNAME: root
      DB_PASSWORD: ninja
      DB_HOST: '127.0.0.1'  
      BROADCAST_DRIVER: log
      CACHE_DRIVER: file
      QUEUE_CONNECTION: sync
      SESSION_DRIVER: file
      NINJA_ENVIRONMENT: hosted
      MULTI_DB_ENABLED: false
      NINJA_LICENSE: 123456
      TRAVIS: true
      MAIL_DRIVER: log

    services:
      mariadb:
        image: mariadb:latest
        ports:
          - 3306
        env:
          MYSQL_ALLOW_EMPTY_PASSWORD: yes
          MYSQL_USER: ninja
          MYSQL_PASSWORD: ninja
          MYSQL_DATABASE: ninja
          MYSQL_ROOT_PASSWORD: ninja
        options: --health-cmd="mysqladmin ping" --health-interval=5s --health-timeout=2s --health-retries=3
        
    steps:
    - name: Start mysql service
      run: |
        sudo /etc/init.d/mysql start
    
    - name: Verify MariaDB connection
      env:
        DB_PORT: ${{ job.services.mariadb.ports[3306] }}
        DB_PORT1: ${{ job.services.mariadb.ports[3306] }}

      run: |
        while ! mysqladmin ping -h"127.0.0.1" -P"$DB_PORT" --silent; do
          sleep 1
        done
    
    - uses: actions/checkout@v1
      with:
        ref: v2
        fetch-depth: 1

    - name: Copy .env
      run: |
        cp .env.ci .env
        
    - name: Install composer dependencies
      run: |
        composer config -g github-oauth.github.com ${{ secrets.GITHUB_TOKEN }}
        composer install

    - name: Prepare Laravel Application
      run: |
        php artisan key:generate
        php artisan optimize
        php artisan cache:clear
        php artisan config:cache
        
    - name: Create DB and schemas
      run: |
        mkdir -p database
        touch database/database.sqlite
        
    - name: Migrate Database
      run: |
        php artisan migrate:fresh --seed --force && php artisan db:seed --force

    - name: Prepare JS/CSS assets
      run: |
        npm i
        npm run production
        
    - name: Run Testsuite
      run: |
        cat .env
        vendor/bin/phpunit --testdox
      env:
        DB_PORT: ${{ job.services.mysql.ports[3306] }}

