name: Runs unit tests for a given ref

on:
  workflow_dispatch:
    inputs:
      ref:
        description: 'GitHub ref to test.'
        required: false
        default: 'master'
        type: string
      prNumber:
        description: 'PR number to run tests for.'
        required: false
        type: number

jobs:
  prepare:
    name: Prepare
    runs-on: ubuntu-latest
    outputs:
      branch: ${{ steps.compute-branch.outputs.branch }}
    steps:
      - name: Compute branch
        id: compute-branch
        run: |
          BRANCH_NAME=""
          if [[ "${{ inputs.prNumber }}" != "" && "${{ inputs.prNumber }}" != "null" ]]; then
            BRANCH_NAME="refs/pull/${{ inputs.prNumber }}/merge"
          else
            BRANCH_NAME="${{ inputs.ref }}"
          fi
          echo "branch=$BRANCH_NAME" >> $GITHUB_OUTPUT

  unit-test:
    name: Unit tests
    needs: prepare
    uses: ./.github/workflows/units-tests-reusable.yml
    with:
      ref: ${{ needs.prepare.outputs.branch }}