"""Tests for the delivery_report logic layer.""" from flexmock import flexmock from deliveryhistory.logic import delivery_report as logic from deliveryhistory.models import delivery_report as model from deliveryhistory.models import delivery_xml def test_get_delivered_stores_details_in_progress_job_supersedes_completed(): """The last job per store in the jobs list takes precedence. SQL orders completed jobs before in-progress ones (NULLs-last on delivery_ended), so an in-progress job overwrites an older completed entry in the per-store dict and its status is returned. """ store_fixture = [{'store_id': 3, 'date_delivered': '2024-01-01'}] completed_job = { 'store_id': 3, 'job_id': 1, 'meta_update': 'N', 'delivery_status': 'delivered', } inprogress_job = { 'store_id': 3, 'job_id': 2, 'meta_update': 'N', 'delivery_status': 'delivering', } (flexmock(model) .should_receive('get_delivered_stores_details') .and_return(store_fixture)) (flexmock(model) .should_receive('get_delivery_jobs') .and_return([completed_job, inprogress_job])) (flexmock(delivery_xml) .should_receive('get_delivery_type') .with_args(2) .and_return(None)) result = logic.get_delivered_stores_details('5555', delivery_info=True) assert result[0]['delivery_status'] == 'delivering' assert result[0]['delivery_type'] == delivery_xml.DELIVERY_TYPE_DELIVERY