language: php

sudo: true

dist: xenial

services:
  - mysql
  - xvfb

# Prevent tests from taking more than 50 minutes
group: deprecated-2017Q4

php:
  - 7.3
  - 7.4
#  - nightly

addons:
  apt:
    packages:
      - libonig-dev
  chrome: stable
  hosts:
    - www.ninja.test

cache:
  directories:
    - vendor
    - $HOME/.composer/cache

env:
  global:
    - COMPOSER_DISCARD_CHANGES=true
    - COMPOSER_NO_INTERACTION=1
    - COMPOSER_DISABLE_XDEBUG_WARN=1

before_install:
  # set GitHub token and update composer
  - if [ -n "$GH_TOKEN" ]; then composer config github-oauth.github.com ${GH_TOKEN}; fi;
  - composer self-update && composer -V
#  - export USE_ZEND_ALLOC=0
  - rvm use 1.9.3 --install --fuzzy
  - cp .env.travis .env

install:
  # install Composer dependencies
  #  - rm composer.lock
  # these providers require referencing git commit's which cause Travis to fail
  #  - sed -i '/mollie/d' composer.json
  #  - sed -i '/2checkout/d' composer.json
  - travis_retry composer install --no-interaction 

before_script:
  # copy configuration files
  - php artisan key:generate --no-interaction
  - sed -i '$a NINJA_DEV=true' .env
  # create the database and user
  - mysql -u root -e "create database IF NOT EXISTS ninja01;"
  - mysql -u root -e "create database IF NOT EXISTS ninja02;"
  - mysql -u root -e "GRANT ALL PRIVILEGES ON ninja01.* To 'ninja'@'localhost' IDENTIFIED BY 'ninja'; FLUSH PRIVILEGES;"
  - mysql -u root -e "GRANT ALL PRIVILEGES ON ninja02.* To 'ninja'@'localhost' IDENTIFIED BY 'ninja'; FLUSH PRIVILEGES;"
  # migrate and seed the database
  - php artisan migrate --database=db-ninja-01 --seed --no-interaction
  - php artisan migrate --database=db-ninja-02 --seed --no-interaction
  - php artisan optimize
  - npm install
  - npm run production
  # migrate and seed the database
  # Start webserver on ninja.test:8000
  # export DISPLAY=:99.0
  # sh -e /etc/init.d/xvfb start
  # sleep 3
  # ./vendor/laravel/dusk/bin/chromedriver-linux &
  - php artisan dusk:chrome-driver 80
  - php artisan serve &

script:
  - php ./vendor/bin/phpunit --debug --verbose --coverage-clover=coverage.xml
  - php artisan dusk
  #- npm test
after_success:
    - bash <(curl -s https://codecov.io/bash)

notifications:
  email:
    on_success: never
    on_failure: change
  slack:
    invoiceninja: SLraaKBDvjeRuRtY9o3Yvp1b
