defaults: &defaults
  working_directory: ~/droplr-js
  docker:
    - image: circleci/node:8.10.0

version: 2
jobs:
  build:
    <<: *defaults
    steps:
      - checkout

      - restore_cache:
          keys:
          - v1-modules-{{ checksum "package.json" }}
          - v1-modules-

      - run: yarn install --frozen-lockfile

      - save_cache:
          paths:
            - ~/droplr-js/node_modules
          key: v1-modules-{{ checksum "package.json" }}

      - persist_to_workspace:
          root: ~/droplr-js
          paths:
            - .

  test:
    <<: *defaults
    steps:
      - attach_workspace:
          at: ~/droplr-js
      - run:
          name: Unit Tests
          command: yarn test:ci

      - store_artifacts:
          path: ~/droplr-js/coverage

  lint:
    <<: *defaults
    steps:
      - attach_workspace:
          at: ~/droplr-js
      - run:
          name: Linter
          command: yarn lint:ci

workflows:
  version: 2
  build_test_lint:
    jobs:
      - build
      - test:
          requires:
            - build
      - lint:
          requires:
            - build
