refactor: make mock_enqueue_job fixture opt-in instead of autouse

Tests that call POST /api/counter/increment now explicitly request
the mock_enqueue_job fixture. This prevents the mock from masking
issues in other tests that don't need it.
This commit is contained in:
counterweight 2025-12-21 23:29:48 +01:00
parent 6f3e729b25
commit 4d9edd7fd4
Signed by: counterweight
GPG key ID: 883EDBAA726BD96C
3 changed files with 10 additions and 8 deletions

View file

@ -241,13 +241,15 @@ async def user_no_roles(client_factory):
} }
@pytest.fixture(autouse=True) @pytest.fixture
def mock_enqueue_job(): def mock_enqueue_job():
"""Mock job enqueueing for all tests. """Mock job enqueueing for tests that hit the counter increment endpoint.
pgqueuer requires PostgreSQL-specific features that aren't available pgqueuer requires PostgreSQL-specific features that aren't available
in the test database setup. We mock the enqueue function to avoid in the test database setup. We mock the enqueue function to avoid
connection issues while still testing the counter logic. connection issues while still testing the counter logic.
Tests that call POST /api/counter/increment must use this fixture.
""" """
mock = AsyncMock(return_value=1) # Return a fake job ID mock = AsyncMock(return_value=1) # Return a fake job ID
with patch("routes.counter.enqueue_random_number_job", mock): with patch("routes.counter.enqueue_random_number_job", mock):

View file

@ -97,7 +97,7 @@ async def test_get_counter_authenticated(client_factory):
@pytest.mark.asyncio @pytest.mark.asyncio
async def test_increment_counter(client_factory): async def test_increment_counter(client_factory, mock_enqueue_job):
async with client_factory.get_db_session() as db: async with client_factory.get_db_session() as db:
godfather = await create_user_with_roles( godfather = await create_user_with_roles(
db, unique_email("gf"), "pass123", [ROLE_REGULAR] db, unique_email("gf"), "pass123", [ROLE_REGULAR]
@ -126,7 +126,7 @@ async def test_increment_counter(client_factory):
@pytest.mark.asyncio @pytest.mark.asyncio
async def test_increment_counter_multiple(client_factory): async def test_increment_counter_multiple(client_factory, mock_enqueue_job):
async with client_factory.get_db_session() as db: async with client_factory.get_db_session() as db:
godfather = await create_user_with_roles( godfather = await create_user_with_roles(
db, unique_email("gf"), "pass123", [ROLE_REGULAR] db, unique_email("gf"), "pass123", [ROLE_REGULAR]
@ -157,7 +157,7 @@ async def test_increment_counter_multiple(client_factory):
@pytest.mark.asyncio @pytest.mark.asyncio
async def test_get_counter_after_increment(client_factory): async def test_get_counter_after_increment(client_factory, mock_enqueue_job):
async with client_factory.get_db_session() as db: async with client_factory.get_db_session() as db:
godfather = await create_user_with_roles( godfather = await create_user_with_roles(
db, unique_email("gf"), "pass123", [ROLE_REGULAR] db, unique_email("gf"), "pass123", [ROLE_REGULAR]
@ -187,7 +187,7 @@ async def test_get_counter_after_increment(client_factory):
# Counter is shared between users # Counter is shared between users
@pytest.mark.asyncio @pytest.mark.asyncio
async def test_counter_shared_between_users(client_factory): async def test_counter_shared_between_users(client_factory, mock_enqueue_job):
# Create godfather and invites for two users # Create godfather and invites for two users
async with client_factory.get_db_session() as db: async with client_factory.get_db_session() as db:
godfather = await create_user_with_roles( godfather = await create_user_with_roles(

View file

@ -104,7 +104,7 @@ class TestCounterAccess:
@pytest.mark.asyncio @pytest.mark.asyncio
async def test_regular_user_can_increment_counter( async def test_regular_user_can_increment_counter(
self, client_factory, regular_user self, client_factory, regular_user, mock_enqueue_job
): ):
async with client_factory.create(cookies=regular_user["cookies"]) as client: async with client_factory.create(cookies=regular_user["cookies"]) as client:
response = await client.post("/api/counter/increment") response = await client.post("/api/counter/increment")
@ -484,7 +484,7 @@ class TestAuditRecords:
@pytest.mark.asyncio @pytest.mark.asyncio
async def test_counter_increment_creates_audit_record( async def test_counter_increment_creates_audit_record(
self, client_factory, regular_user, admin_user self, client_factory, regular_user, admin_user, mock_enqueue_job
): ):
"""Verify that counter increments are recorded and visible in audit.""" """Verify that counter increments are recorded and visible in audit."""
# Regular user increments counter # Regular user increments counter