# PHP CircleCI 2.0 configuration file
#
# Check https://circleci.com/docs/2.0/language-php/ for more details
#
version: 2
jobs:
  build:
    docker:
      # specify the version you desire here
      # - image: alefesouza/php7-laravel-node-yarn
      - image: circleci/php:7.1-node-browsers
      - image: circleci/mysql:5.7
        environment:
          - MYSQL_USER=root
          - MYSQL_PASSWORD=
          - MYSQL_ALLOW_EMPTY_PASSWORD=true
          - MYSQL_DATABASE={{ name }}_db

    working_directory: ~/boilerplate

    steps:
      - checkout

      - run: sudo apt install -y zlib1g-dev libicu-dev g++
      - run: sudo docker-php-ext-install zip
      - run: sudo docker-php-ext-install pdo_mysql
      - run: sudo docker-php-ext-configure intl && sudo docker-php-ext-install intl
      - run: sudo composer self-update

      # Download and cache dependencies
      # - restore_cache:
      #     keys:
      #     - v1-dependencies-\{{ checksum "composer.json" }}
      #     # fallback to using the latest cache if no exact match is found
      #     - v1-dependencies-

      - run:
          name: Run Composer
          command: |
            cp .env.testing.example .env
            composer install -n --prefer-dist
            composer run key:generate
            php artisan vue-i18n:generate
            php artisan migrate --seed
            composer run jwt:generate

      # - save_cache:
      #     key: composer-v1-\{{ checksum "composer.lock" }}
      #     paths:
      #       - vendor

      - restore_cache:
          keys:
            - node-v1-\{{ checksum "frontend/package.json" }}
            - node-v1-

      - run: cd frontend && yarn install
      - run:
          name: Run Yarn
          command: |
            cd frontend
            yarn --pure-lockfile
            yarn build
      - save_cache:
          key: node-v1-\{{ checksum "frontend/package.json" }}
          paths:
            - frontend/node_modules

      - run:
          name: Test
          command: |
            mkdir -p out/tests
            composer test -- --log-junit out/tests/tests-phpunit.xml
            cd frontend
            yarn test:unit

          # mv tests-jest.xml ../out/tests/tests-jest.xml
      - store_artifacts:
          path: out/tests
          destination: test-results

      - store_test_results:
          path: out/tests
