language: php

sudo: true

php:
  - 5.5
#  - 5.6
#  - 7.0
#  - hhvm

addons:
  hosts:
    - ninja.dev

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

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 --prefer-dist;

before_script:
  # prevent MySQL went away error 
  - mysql -u root -e 'SET @@GLOBAL.wait_timeout=28800;'
  # copy configuration files
  - cp .env.example .env
  - cp tests/_bootstrap.php.default tests/_bootstrap.php
  - php artisan key:generate --no-interaction
  - sed -i 's/APP_ENV=production/APP_ENV=development/g' .env
  - sed -i 's/APP_DEBUG=false/APP_DEBUG=true/g' .env
  - sed -i 's/REQUIRE_HTTPS=false/NINJA_DEV=true/g' .env
  # create the database and user
  - mysql -u root -e "create database IF NOT EXISTS ninja;"
  - mysql -u root -e "GRANT ALL PRIVILEGES ON ninja.* To 'ninja'@'localhost' IDENTIFIED BY 'ninja'; FLUSH PRIVILEGES;"
  # migrate and seed the database
  - php artisan migrate --no-interaction
  - php artisan db:seed --no-interaction # default seed
  - php artisan db:seed --no-interaction --class=UserTableSeeder # development seed
  # Start webserver on ninja.dev:8000
  - php artisan serve --host=ninja.dev --port=8000 & # '&' allows to run in background
  # Start PhantomJS
  - phantomjs --webdriver=4444 & # '&' allows to run in background
  # Give it some time to start
  - sleep 5
  # Make sure the app is up-to-date
  - curl -L http://ninja.dev:8000/update

script:
  - php ./vendor/codeception/codeception/codecept run --debug acceptance AllPagesCept.php
  - php ./vendor/codeception/codeception/codecept run --debug acceptance APICest.php
  - php ./vendor/codeception/codeception/codecept run --debug acceptance CheckBalanceCest.php
  - php ./vendor/codeception/codeception/codecept run --debug acceptance ClientCest.php
  - php ./vendor/codeception/codeception/codecept run --debug acceptance ExpenseCest.php
  - php ./vendor/codeception/codeception/codecept run --debug acceptance CreditCest.php
  - php ./vendor/codeception/codeception/codecept run --debug acceptance InvoiceCest.php
  - php ./vendor/codeception/codeception/codecept run --debug acceptance InvoiceDesignCest.php
  - php ./vendor/codeception/codeception/codecept run acceptance OnlinePaymentCest.php
  - php ./vendor/codeception/codeception/codecept run --debug acceptance PaymentCest.php
  - php ./vendor/codeception/codeception/codecept run --debug acceptance TaskCest.php
  - php ./vendor/codeception/codeception/codecept run --debug acceptance TaxRatesCest.php

  #- sed -i 's/NINJA_DEV=true/NINJA_PROD=true/g' .env
  #- php ./vendor/codeception/codeception/codecept run acceptance GoProCest.php

after_script:
  - cat .env
  - mysql -u root -e 'select * from accounts;' ninja
  - mysql -u root -e 'select * from account_gateways;' ninja
  - mysql -u root -e 'select * from clients;' ninja
  - mysql -u root -e 'select * from invoices;' ninja
  - mysql -u root -e 'select * from invoice_items;' ninja
  - cat storage/logs/laravel.log

notifications:
  email:
    on_success: never
    on_failure: change