executor: node

parameters:
  cache-version:
    type: string
  max-workers:
    type: integer
    default: 2
  needs-built-app:
    type: boolean
    default: false
  coverage:
    type: boolean
    default: false
  coverage-artifacts:
    type: boolean
    default: false

steps:
  - checkout
  - restore-cache:
      version: << parameters.cache-version >>
      cache-name: dependencies
  - when:
      condition: << parameters.needs-built-app >>
      steps:
        - attach_workspace:
            at: ~/repo
        - run:
            name: Check app build
            command: ./scripts/check-build.sh
  - run:
      name: Run unit tests
      command: yarn run test<<# parameters.coverage >> --collectCoverage<</ parameters.coverage >> --maxWorkers << parameters.max-workers >>
  - when:
      condition: << parameters.coverage >>
      steps:
        - codecov/upload
  - when:
      condition: << parameters.coverage-artifacts >>
      steps:
        - store_artifacts:
            path: coverage
