name: "Quaint: integration tests"
on:
  push:
    branches:
      - main
  pull_request:
    paths:
      - "quaint/**"
      - "!.github/workflows/test-quaint.yml"

jobs:
  tests:
    runs-on: ubuntu-latest

    strategy:
      fail-fast: false
      matrix:
        features:
          - "--lib --features=all-native"
    env:
      TEST_MYSQL: "mysql://root:prisma@localhost:3306/prisma"
      TEST_MYSQL8: "mysql://root:prisma@localhost:3307/prisma"
      TEST_MYSQL_MARIADB: "mysql://root:prisma@localhost:3308/prisma"
      TEST_PSQL: "postgres://postgres:prisma@localhost:5432/postgres"
      TEST_MSSQL: "jdbc:sqlserver://localhost:1433;database=master;user=SA;password=<YourStrong@Passw0rd>;trustServerCertificate=true;isolationLevel=READ UNCOMMITTED"
      TEST_CRDB: "postgresql://prisma@127.0.0.1:26259/postgres"

    steps:
      - uses: actions/checkout@v4
      - uses: actions-rust-lang/setup-rust-toolchain@v1

      - uses: actions/cache@v4
        with:
          path: |
            ~/.cargo/registry
            ~/.cargo/git
            target
          key: ${{ runner.os }}-cargo-${{ matrix.features }}

      - name: Start Databases
        run: docker compose -f docker-compose.yml up -d
        working-directory: ./quaint

      - name: Sleep for 20s
        uses: juliangruber/sleep-action@v2
        with:
          time: 20s

      - name: Run tests
        run: cargo test ${{ matrix.features }}
        working-directory: ./quaint