name: tests

on: [push, pull_request]

jobs:
  venv-sqlite:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        python-version: ["3.9"]
        poetry-version: ["1.3.1"]
    steps:
      - uses: actions/checkout@v2
      - name: Set up Python ${{ matrix.python-version }}
        uses: actions/setup-python@v2
        with:
          python-version: ${{ matrix.python-version }}
      - name: Install dependencies
        env:
          VIRTUAL_ENV: ./venv
          PATH: ${{ env.VIRTUAL_ENV }}/bin:${{ env.PATH }}
        run: |
          python -m venv ${{ env.VIRTUAL_ENV }}
          ./venv/bin/python -m pip install --upgrade pip
          ./venv/bin/pip install -r requirements.txt
          ./venv/bin/pip install pytest pytest-asyncio pytest-cov requests mock
      - name: Run tests
        run: make test-venv
  sqlite:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        python-version: ["3.9"]
        poetry-version: ["1.3.1"]
    steps:
      - uses: actions/checkout@v2
      - name: Set up Python ${{ matrix.python-version }}
        uses: actions/setup-python@v2
        with:
          python-version: ${{ matrix.python-version }}
      - name: Set up Poetry ${{ matrix.poetry-version }}
        uses: abatilo/actions-poetry@v2
        with:
          poetry-version: ${{ matrix.poetry-version }}
      - name: Install dependencies
        run: |
          poetry install
      - name: Run tests
        run: make test
  postgres:
    runs-on: ubuntu-latest
    services:
      postgres:
        image: postgres:latest
        env:
          POSTGRES_USER: postgres
          POSTGRES_PASSWORD: postgres
          POSTGRES_DB: postgres
        ports:
          # maps tcp port 5432 on service container to the host
          - 5432:5432
        options: >-
          --health-cmd pg_isready
          --health-interval 10s
          --health-timeout 5s
          --health-retries 5
    strategy:
      matrix:
        python-version: ["3.9"]
        poetry-version: ["1.3.1"]
    steps:
      - uses: actions/checkout@v2
      - name: Set up Python ${{ matrix.python-version }}
        uses: actions/setup-python@v2
        with:
          python-version: ${{ matrix.python-version }}
      - name: Set up Poetry ${{ matrix.poetry-version }}
        uses: abatilo/actions-poetry@v2
        with:
          poetry-version: ${{ matrix.poetry-version }}
      - name: Install dependencies
        run: |
          poetry install
      - name: Run tests
        env:
          LNBITS_DATABASE_URL: postgres://postgres:postgres@0.0.0.0:5432/postgres
        run: make test
      - name: Upload coverage to Codecov
        uses: codecov/codecov-action@v3
        with:
          file: ./coverage.xml
