name: ci
on:
  push:
  pull_request:

jobs:
  test:
    name: 'Unit- & API tests'
    # because of https://github.com/usebruno/bruno/issues/5003, we currently need Node.js v20, so pinning runner image at ubuntu 24.04 for now
    runs-on: ubuntu-24.04
    permissions:
      contents: read
    steps:
    - name: Check out code into the Go module directory
      uses: actions/checkout@v5

    - name: Set up Go 1.x
      uses: actions/setup-go@v6
      with:
        go-version: ^1.25
      id: go

    - name: Get dependencies
      run: go get

    - name: Unit Tests
      run: CGO_ENABLED=0 go test `go list ./... | grep -v 'github.com/muety/wakapi/scripts'` -run ./...  # skip scripts package, because not actually a package

    - name: API Tests
      run: |
        npm install -g @usebruno/cli
        ./testing/run_api_tests.sh

    - name: Mail Tests
      run: ./testing/run_mail_tests.sh

  migration:
    name: Migration tests
    runs-on: ubuntu-24.04
    permissions:
      contents: read

    strategy:
      fail-fast: false
      matrix:
        db: [sqlite, postgres, mysql, mariadb]

    steps:
    - name: Check out code into the Go module directory
      uses: actions/checkout@v5

    - name: Set up Go 1.x
      uses: actions/setup-go@v6
      with:
        go-version: ^1.25
      id: go

    - run: npm install -g @usebruno/cli

    - run: ./testing/run_api_tests.sh ${{ matrix.db }} --migration
