name: Coverage Testing

on: [workflow_dispatch, push, pull_request]

permissions: read-all

jobs:
  Coverage:
    runs-on: ubuntu-20.04
    env:
      CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }}
      CODACY_PROJECT_TOKEN: ${{ secrets.CODACY_PROJECT_TOKEN }}
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-node@v2
        with:
          node-version: '16'
          cache: 'npm'
      - name: Install Application
        run: |
          npm ci
          npm install -g mocha c8 cypress@10
      - name: Copy Test Config
        run: cp ./data/config.testing.js ./data/config.js
      - name: Initialize Database
        run: npm run init:cemetery:test
      - name: Verify Cypress
        run: cypress verify
        env:
          CYPRESS_VERIFY_TIMEOUT: 600000
      - name: Run Coverage Testing
        run: c8 --reporter=lcov --reporter=text --reporter=text-summary mocha --timeout 10000 --exit
        env:
          CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
      - name: Code Climate
        if: ${{ github.event_name != 'pull_request' && env.CC_TEST_REPORTER_ID != '' }}
        run: |
          curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./codeclimate-test-reporter
          chmod +x codeclimate-test-reporter
          ./codeclimate-test-reporter before-build
          ./codeclimate-test-reporter after-build -t lcov --exit-code $?
      - name: Codacy
        if: ${{ github.event_name != 'pull_request' && env.CODACY_PROJECT_TOKEN != '' }}
        run: bash <(curl -Ls https://coverage.codacy.com/get.sh) report -r ./coverage/lcov.info
