name: LNbits CI
on:
  push:
    branches:
      - main
      - dev
  pull_request:


jobs:

  lint:
    uses: ./.github/workflows/lint.yml

  test-api:
    needs: [ lint ]
    strategy:
      matrix:
        python-version: ["3.9", "3.10"]
        db-url: ["", "postgres://lnbits:lnbits@0.0.0.0:5432/lnbits"]
    uses: ./.github/workflows/tests.yml
    with:
      custom-pytest: "poetry run pytest tests/api"
      python-version: ${{ matrix.python-version }}
      db-url: ${{ matrix.db-url }}
    secrets:
      CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}

  test-wallets:
    needs: [ lint ]
    strategy:
      matrix:
        python-version: ["3.9", "3.10"]
        db-url: ["", "postgres://lnbits:lnbits@0.0.0.0:5432/lnbits"]
    uses: ./.github/workflows/tests.yml
    with:
      custom-pytest: "poetry run pytest tests/wallets"
      python-version: ${{ matrix.python-version }}
      db-url: ${{ matrix.db-url }}
    secrets:
      CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}

  test-unit:
    needs: [ lint ]
    strategy:
      matrix:
        python-version: ["3.9", "3.10"]
        db-url: ["", "postgres://lnbits:lnbits@0.0.0.0:5432/lnbits"]
    uses: ./.github/workflows/tests.yml
    with:
      custom-pytest: "poetry run pytest tests/unit"
      python-version: ${{ matrix.python-version }}
      db-url: ${{ matrix.db-url }}
    secrets:
      CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}

  migration:
    needs: [ lint ]
    strategy:
      matrix:
        python-version: ["3.9", "3.10"]
    uses: ./.github/workflows/migration.yml
    with:
      python-version: ${{ matrix.python-version }}

  openapi:
    needs: [ lint ]
    uses: ./.github/workflows/make.yml
    with:
      make: openapi

  regtest:
    needs: [ lint ]
    uses: ./.github/workflows/regtest.yml
    strategy:
      matrix:
        python-version: ["3.9"]
        backend-wallet-class: ["LndRestWallet", "LndWallet", "CoreLightningWallet", "CoreLightningRestWallet", "LNbitsWallet", "EclairWallet"]
    with:
      custom-pytest: "poetry run pytest tests/regtest"
      python-version: ${{ matrix.python-version }}
      backend-wallet-class: ${{ matrix.backend-wallet-class }}
    secrets:
      CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}

  jmeter:
    needs: [ lint ]
    strategy:
      matrix:
        python-version: ["3.9"]
        poetry-version: ["1.5.1"]
    uses: ./.github/workflows/jmeter.yml
    with:
      python-version: ${{ matrix.python-version }}
      poetry-version: ${{ matrix.poetry-version }}
