"""Smoke test for the migration test_db fixture.

This test imports the `test_db` fixture and asserts expected behavior in two
cases:

- If the environment variable TEST_DB_URL is not set, the fixture should yield
  None.
- If TEST_DB_URL is set, the fixture should yield a connection-like object
  (we check for an object with a `cursor` attribute or the sqlite3 connection
  type).
"""

import os
import types

import pytest


def test_migration_fixture_smoke(test_db):
    """Smoke test ensuring the test_db fixture yields expected values."""
    url = os.environ.get("TEST_DB_URL")
    if not url:
        assert test_db is None
    else:
        # For sqlite we expect a sqlite3.Connection which has a 'cursor'
        # method. Be permissive and accept any object with a 'cursor'
        # attribute or callable.
        assert test_db is not None
        assert hasattr(test_db, "cursor") or hasattr(test_db, "execute")
