name: CI-check-and-unit-test

on:
  push:
    branches:
    - 'main'
    - 'release/**'
    paths-ignore:
    - 'dist/**'
  pull_request:

permissions:
  contents: read

jobs:
  check-format-and-unit-test:
    runs-on: ubuntu-latest

    steps:
    - name: Checkout sources
      uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
    - uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4.2.0
      with:
        node-version: 20
        cache: npm
        cache-dependency-path: sources/package-lock.json
    - name: Setup Gradle
      # Use a released version to avoid breakages
      uses: gradle/actions/setup-gradle@94baf225fe0a508e581a564467443d0e2379123b # v4.3.0
      env:
        ALLOWED_GRADLE_WRAPPER_CHECKSUMS: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 # Invalid wrapper jar used for testing
      with:
        gradle-version: "8.12.1"

    - name: Install npm dependencies
      run: |
        npm clean-install
      working-directory: sources

    - name: Check formatting and compile
      run: |
        npm run check
        npm run compile
      working-directory: sources
      env:
        NODE_OPTIONS: '-r @gradle/develocity-agent/preload'
        DEVELOCITY_URL: 'https://ge.solutions-team.gradle.com'
        DEVELOCITY_ACCESS_KEY: '${{ secrets.DV_SOLUTIONS_ACCESS_KEY }}'

    - name: Run unit tests
      run: |
        npm test
      working-directory: sources
      env:
        NODE_OPTIONS: '-r @gradle/develocity-agent/preload'
        DEVELOCITY_URL: 'https://ge.solutions-team.gradle.com'
        DEVELOCITY_ACCESS_KEY: '${{ secrets.DV_SOLUTIONS_ACCESS_KEY }}'
