version: 2.1

orbs:
  micro-app: wealthsimple/micro-app@dev:master

executors:
  node:
    working_directory: /home/circleci/wealthsimple
    docker:
      - image: wealthsimple/node:9.11.1-docker
        environment:
          JUNIT_REPORT_PATH: /tmp/test-results
          JUNIT_REPORT_NAME: test-results.xml

jobs:
  test:
    executor: node
    steps:
      - micro-app/attach_code_workspace
      - run:
          name: Runs unit tests
          command: yarn test
      - store_test_results:
          path: /tmp/test-results

  static_checks:
    executor: node
    steps:
      - micro-app/attach_code_workspace
      - run:
          name: Runs linters
          command: yarn lint:css && yarn lint:js

  checkout:
    executor: node
    steps:
      - checkout
      - restore_cache:
          key: v2-node-modules-{{ checksum "yarn.lock" }}
      - run:
          name: Checks out code and installs npm dependencies
          command: |
            yarn install --no-progress --cache-folder './.yarn-cache'
      - save_cache:
          key: v2-node-modules-{{ checksum "yarn.lock" }}
          paths:
            - node_modules
      - persist_to_workspace:
          root: .
          paths: .

workflows:
  version: 2
  build-and-deploy:
    jobs:
      - checkout:
          context: wealthsimple
      - micro-app/security:
          context: wealthsimple
          requires:
            - checkout
      - test:
          context: wealthsimple
          requires:
            - checkout
      - static_checks:
          context: wealthsimple
          requires:
            - checkout
