"""Tests for the delivery_report model.""" from contextlib import contextmanager from unittest.mock import MagicMock from flexmock import flexmock from deliveryhistory.connectors import mysql from deliveryhistory.models import delivery_report def _mock_dd_session(rows): """Return a dd_session_scope context manager yielding a mock db session.""" mock_db = MagicMock() mock_db.execute.return_value.mappings.return_value.fetchall.return_value = rows @contextmanager def _scope(): yield mock_db return _scope def test_get_delivery_jobs_returns_rows(): """get_delivery_jobs returns job rows for a given upc.""" rows = [{'job_id': 1, 'store_id': 3, 'meta_update': 'N'}] flexmock(mysql).should_receive('dd_session_scope').and_return( _mock_dd_session(rows)()) result = delivery_report.get_delivery_jobs('5555') assert list(result) == rows def test_get_delivery_jobs_with_store_id(): """get_delivery_jobs filters by store_id when provided.""" rows = [{'job_id': 1, 'store_id': 3, 'meta_update': 'Y'}] flexmock(mysql).should_receive('dd_session_scope').and_return( _mock_dd_session(rows)()) result = delivery_report.get_delivery_jobs('5555', store_id='3') assert list(result) == rows