name: Test PR

on:
  pull_request:
    branches:
      - main

concurrency:
  group: ${{ github.workflow }}-${{ github.head_ref }}
  cancel-in-progress: true

env:
  BW_ACCOUNT_ID: ${{ secrets.BW_ACCOUNT_ID }}
  BW_USERNAME: ${{ secrets.BW_USERNAME }}
  BW_PASSWORD: ${{ secrets.BW_PASSWORD }}
  BW_CLIENT_ID: ${{ secrets.BW_CLIENT_ID }}
  BW_CLIENT_SECRET: ${{ secrets.BW_CLIENT_SECRET }}
  BW_USERNAME_FORBIDDEN: ${{ secrets.BW_USERNAME_FORBIDDEN }}
  BW_PASSWORD_FORBIDDEN: ${{ secrets.BW_PASSWORD_FORBIDDEN }}
  BW_VOICE_APPLICATION_ID: ${{ secrets.BW_VOICE_APPLICATION_ID }}
  BW_MESSAGING_APPLICATION_ID: ${{ secrets.BW_MESSAGING_APPLICATION_ID }}
  BW_NUMBER: ${{ secrets.BW_NUMBER }}
  USER_NUMBER: ${{ secrets.USER_NUMBER }}
  BASE_CALLBACK_URL: ${{ secrets.BASE_CALLBACK_URL }}
  MANTECA_ACTIVE_NUMBER: ${{ secrets.MANTECA_ACTIVE_NUMBER }}
  MANTECA_IDLE_NUMBER: ${{ secrets.MANTECA_IDLE_NUMBER }}
  MANTECA_BASE_URL: ${{ secrets.MANTECA_BASE_URL }}
  MANTECA_APPLICATION_ID: ${{ secrets.MANTECA_APPLICATION_ID }}

jobs:
  test:
    name: Test PR
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [windows-2022, windows-2025, ubuntu-22.04, ubuntu-24.04]
        node-version: [20, 22, 24]
      fail-fast: false
    steps:
      - name: Checkout
        uses: actions/checkout@v6

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

      - name: Install Packages and Test
        run: |
          yarn
          npm install -g @stoplight/prism-cli
          prism mock ./bandwidth.yml & yarn test-unit
        env:
          OPERATING_SYSTEM: ${{ matrix.os }}
        shell: bash
