name: node_js CI

on:
  push:
    branches:
    - master
  pull_request:
    branches:
    - '**'

jobs:
  tests:
    runs-on: ubuntu-20.04
    strategy:
      matrix:
        node: [16]

    steps:
    - name: Checkout
      uses: actions/checkout@v2

    - name: Setup Nodejs
      uses: actions/setup-node@v1
      with:
        node-version: ${{ matrix.node }}

    - name: Setup npm
      run: npm i -g npm@8.x.x

    - name: Install dependencies
      run: npm ci

    - name: Cache node modules
      uses: actions/cache@v2
      with:
        path: ~/.npm
        key: v1-npm-deps-${{ hashFiles('**/package-lock.json') }}
        restore-keys: v1-npm-deps-

    - name: Unit Tests
      run: npm run test

    - name: Build
      run: npm run build

    - name: Validation Checks
      run: ./.github/validate_changes_for_merge.sh

    - name: Run Coverage
      uses: codecov/codecov-action@v3
