mirror of
https://github.com/Sea-Haven-Industries/meal-order-manager.git
synced 2026-09-30 12:23:13 +00:00
Wall-clock skip windows dropped the only weekly SQS attempt when Scheduler already fired in Eastern time. Dev schedules stay disabled.
53 lines
1.6 KiB
Python
53 lines
1.6 KiB
Python
"""SQS worker deletes completed jobs and leaves skipped messages for retry."""
|
|
|
|
import json
|
|
from unittest.mock import MagicMock, patch
|
|
|
|
from server import worker
|
|
|
|
|
|
def _one_message_then_stop(body: dict):
|
|
def receive_message(**_kwargs):
|
|
worker._stop(None, None)
|
|
return {
|
|
"Messages": [
|
|
{
|
|
"ReceiptHandle": "rh-1",
|
|
"Body": json.dumps(body),
|
|
}
|
|
]
|
|
}
|
|
|
|
return receive_message
|
|
|
|
|
|
@patch("server.worker.boto3.client")
|
|
@patch("server.worker.run_job")
|
|
def test_worker_does_not_delete_skipped_jobs(mock_run, mock_client):
|
|
sqs = MagicMock()
|
|
mock_client.return_value = sqs
|
|
sqs.receive_message.side_effect = _one_message_then_stop({"event": "close"})
|
|
mock_run.return_value = {"status": "skipped", "reason": "outside window"}
|
|
|
|
with patch.dict("os.environ", {"JOBS_QUEUE_URL": "https://sqs.example/jobs"}):
|
|
worker._running = True
|
|
worker.main()
|
|
|
|
sqs.delete_message.assert_not_called()
|
|
|
|
|
|
@patch("server.worker.boto3.client")
|
|
@patch("server.worker.run_job")
|
|
def test_worker_deletes_completed_jobs(mock_run, mock_client):
|
|
sqs = MagicMock()
|
|
mock_client.return_value = sqs
|
|
sqs.receive_message.side_effect = _one_message_then_stop({"event": "close"})
|
|
mock_run.return_value = {"status": "closed", "week": "2026-W19"}
|
|
|
|
with patch.dict("os.environ", {"JOBS_QUEUE_URL": "https://sqs.example/jobs"}):
|
|
worker._running = True
|
|
worker.main()
|
|
|
|
sqs.delete_message.assert_called_once_with(
|
|
QueueUrl="https://sqs.example/jobs", ReceiptHandle="rh-1"
|
|
)
|