Skip to content

Commit 4429505

Browse files
Copilotjason810496
andauthored
Improve test coverage for op module based on review feedback (#29)
* Initial plan * Add tests for _execute_operation with provided session and read_with_poll without vt Co-authored-by: jason810496 <[email protected]> * Add test for async _execute_operation path when session is None Co-authored-by: jason810496 <[email protected]> * Remove fragile line number references from test comments Co-authored-by: jason810496 <[email protected]> * Clarify comment in test_read_with_poll_without_vt Co-authored-by: jason810496 <[email protected]> * Address final code review feedback: improve test structure and add cleanup verification Co-authored-by: jason810496 <[email protected]> --------- Co-authored-by: copilot-swe-agent[bot] <[email protected]> Co-authored-by: jason810496 <[email protected]>
1 parent fef6f3d commit 4429505

1 file changed

Lines changed: 86 additions & 0 deletions

File tree

tests/test_queue.py

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -480,3 +480,89 @@ def test_create_partitioned_queue_invalid_numeric_interval(pgmq_all_variants):
480480
queue_name, partition_interval=-100, retention_interval=100000
481481
)
482482
assert "Numeric partition interval must be positive" in str(e.value)
483+
484+
485+
def test_read_with_poll_without_vt(pgmq_setup_teardown: PGMQ_WITH_QUEUE):
486+
"""Test read_with_poll when vt parameter is not provided (None)."""
487+
488+
pgmq, queue_name = pgmq_setup_teardown
489+
490+
# Set a custom default vt for the pgmq instance
491+
pgmq.vt = 100
492+
493+
# Send a message
494+
msg_id = pgmq.send(queue_name, MSG)
495+
496+
# Call read_with_poll with vt=None to test the fallback logic
497+
# When vt is None, it should fall back to using pgmq.vt value (100)
498+
msgs = pgmq.read_with_poll(
499+
queue_name,
500+
vt=None, # Explicitly passing None to test the None fallback logic
501+
qty=1,
502+
max_poll_seconds=2,
503+
poll_interval_ms=100,
504+
)
505+
506+
assert msgs is not None
507+
assert len(msgs) == 1
508+
assert msgs[0].msg_id == msg_id
509+
assert msgs[0].message == MSG
510+
511+
512+
def test_execute_operation_with_provided_sync_session(pgmq_by_session_maker, get_session_maker, db_session):
513+
"""Test _execute_operation sync path when session is provided."""
514+
515+
pgmq: PGMQueue = pgmq_by_session_maker
516+
queue_name = f"test_queue_{uuid.uuid4().hex}"
517+
518+
# Create a session to pass to the operations
519+
# Using the same session across multiple operations demonstrates
520+
# that the sync path with provided session works correctly
521+
with get_session_maker() as session:
522+
# Create queue with provided session
523+
pgmq.create_queue(queue_name, session=session)
524+
525+
# Verify queue was created
526+
assert check_queue_exists(db_session, queue_name) is True
527+
528+
# Send a message with the same provided session
529+
msg_id = pgmq.send(queue_name, MSG, session=session)
530+
531+
# Read message with the same provided session
532+
msg = pgmq.read(queue_name, vt=30, session=session)
533+
534+
assert msg is not None
535+
assert msg.msg_id == msg_id
536+
assert msg.message == MSG
537+
538+
# Clean up with the same provided session
539+
pgmq.drop_queue(queue_name, session=session)
540+
541+
# Verify queue was dropped
542+
assert check_queue_exists(db_session, queue_name) is False
543+
544+
545+
def test_execute_operation_async_with_session_none(pgmq_by_async_dsn, db_session):
546+
"""Test _execute_operation async path when session is None."""
547+
548+
pgmq: PGMQueue = pgmq_by_async_dsn
549+
queue_name = f"test_queue_{uuid.uuid4().hex}"
550+
551+
# Verify this is an async PGMQueue
552+
assert pgmq.is_async is True
553+
554+
# When session is None, _execute_operation creates a new async session
555+
# and uses loop.run_until_complete to execute the operation
556+
pgmq.create_queue(queue_name)
557+
msg_id = pgmq.send(queue_name, MSG)
558+
msg = pgmq.read(queue_name, vt=30)
559+
560+
assert msg is not None
561+
assert msg.msg_id == msg_id
562+
assert msg.message == MSG
563+
564+
# Clean up
565+
pgmq.drop_queue(queue_name)
566+
567+
# Verify queue was dropped
568+
assert check_queue_exists(db_session, queue_name) is False

0 commit comments

Comments
 (0)