name: integration tests
on:
  workflow_dispatch:
  schedule:
    - cron: "0 0 * * SUN" # run every Sunday at midnight

env:
  PYTHON_VERSION: "3.10"

jobs:
  test_integration:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v5
      - name: Install Python tools
        uses: BrandonLWhite/pipx-install-action@v1.0.3
      - uses: actions/setup-python@v6
        with:
          python-version: ${{ env.PYTHON_VERSION }}
          cache: poetry

      - name: Install dependencies
        run: poetry install

      - name: Test
        env:
          INTEGRATION_TEST: 1
        run: poe test

      - name: Check external links in docs
        run: poe check-docs-links

      - name: Notify on failure
        if: ${{ failure() }}
        env:
          ZULIP_BOT_CREDENTIALS: ${{ secrets.ZULIP_BOT_CREDENTIALS }}
        run: |
          if [ -z "${ZULIP_BOT_CREDENTIALS}" ]; then
            echo "Skipping notify, ZULIP_BOT_CREDENTIALS is unset"
            exit 0
          fi

          curl -X POST https://beets.zulipchat.com/api/v1/messages \
            -u "${ZULIP_BOT_CREDENTIALS}" \
            -d "type=stream" \
            -d "to=github" \
            -d "subject=${GITHUB_WORKFLOW} - $(date -u +%Y-%m-%d)" \
            -d "content=[${GITHUB_WORKFLOW}#${GITHUB_RUN_NUMBER}](${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID}) failed."
