name: 检查bot是否运行正常

on:
  push:
    branches: ["main"]
    paths:
      - zhenxun/**
      - tests/**
      - .github/workflows/bot_check.yml
      - bot.py
  pull_request:
    branches: ["main"]
    paths:
      - zhenxun/**
      - tests/**
      - .github/workflows/bot_check.yml
      - bot.py

jobs:
  bot-check:
    runs-on: ubuntu-latest
    name: bot check
    steps:
      - uses: actions/checkout@v4

      - name: Setup Python
        id: setup_python
        uses: actions/setup-python@v5
        with:
          python-version: "3.10"

      - name: Install Poetry
        run: pip install poetry

      # Poetry cache depends on OS, Python version and Poetry version.
      - name: Cache Poetry cache
        id: cache-poetry
        uses: actions/cache@v3
        with:
          path: ~/.cache/pypoetry
          key: poetry-cache-${{ runner.os }}-${{ steps.setup_python.outputs.python-version }}-${{ hashFiles('pyproject.toml') }}

      - name: Cache playwright cache
        id: cache-playwright
        uses: actions/cache@v3
        with:
          path: ~/.cache/ms-playwright
          key: playwright-cache-${{ runner.os }}-${{ steps.setup_python.outputs.python-version }}

      - name: Cache Data cache
        uses: actions/cache@v3
        with:
          path: data
          key: data-cache-${{ runner.os }}-${{ steps.setup_python.outputs.python-version }}

      - name: Install dependencies
        if: steps.cache-poetry.outputs.cache-hit != 'true'
        run: |
          rm -rf poetry.lock
          poetry source remove aliyun
          poetry install --no-root

      - name: Install playwright
        if: steps.cache-playwright.outputs.cache-hit != 'true'
        run: |
          poetry run sudo apt-get update
          poetry run sudo apt-get install -y libgstreamer-plugins-base1.0-0 libgstreamer1.0-0 gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-libav flite x264 libx264-dev
          poetry run pip install playwright
          poetry run playwright install-deps
          poetry run playwright install

      - name: Run tests
        run: poetry run pytest --cov=zhenxun --cov-report xml

      - name: Check bot run
        id: bot_check_run
        run: |
          mv scripts/bot_check.py bot_check.py
          sed -i "s|^.*\?DB_URL.*|DB_URL=\"${{ env.DB_URL }}\"|g" .env.dev
          sed -i "s/^.*\?LOG_LEVEL.*/LOG_LEVEL=${{ env.LOG_LEVEL }}/g" .env.dev
          poetry run python3 bot_check.py
        env:
          DB_URL: "sqlite://:memory:"
          LOG_LEVEL: DEBUG
