"""Test account logic layer.""" from unittest.mock import MagicMock from reporting.constants.physical_reporting import US_SUPPLY_CHAIN from reporting.constants.report_map import PRODUCT_US from reporting.logic import physical_reporting from reporting.models import persister from reporting.models.us_physical_product_view import USPhysicalProductView def test_get_report_by_name(mocker): """Test it delegates to the model correctly.""" mocker.patch.object(USPhysicalProductView, 'all', return_value='Data') params = {} assert physical_reporting.get_report_by_name(PRODUCT_US, params) == 'Data' USPhysicalProductView.all.assert_called_with(params) def test_get_report_filters_by_type(mocker): """Test it delegates to the model correctly.""" mocker.patch.object(USPhysicalProductView, 'filter', return_value='Data') assert ( physical_reporting.get_report_filters_by_type(PRODUCT_US, 1, None) == 'Data' ) USPhysicalProductView.filter.assert_called_with(1, None) def test_get_top_open_orders(monkeypatch): """Test get_top_open_orders calls persister with correct args.""" vendor_ids = [22221, 24583] rows = [ { 'open_order_qt': 500, 'artist_product': 'Artist A/Album X', 'local_product_cd': 'ABC123', 'vendor_id': 22221, 'subacct_id': 33034, }, { 'open_order_qt': 300, 'artist_product': 'Artist B/Album Y', 'local_product_cd': 'DEF456', 'vendor_id': 24583, 'subacct_id': 22321, }, ] monkeypatch.setattr( persister, 'get_top_open_orders', MagicMock(return_value=rows) ) result = physical_reporting.get_top_open_orders(vendor_ids) persister.get_top_open_orders.assert_called_once_with( vendor_ids, US_SUPPLY_CHAIN, None ) assert result == {'results': rows} def test_get_top_open_orders_with_subacct_ids(monkeypatch): """Test get_top_open_orders passes subacct_ids to persister.""" vendor_ids = [22221, 24583] subacct_ids = [33034, 22321] rows = [ { 'open_order_qt': 500, 'artist_product': 'Artist A/Album X', 'local_product_cd': 'ABC123', 'vendor_id': 22221, 'subacct_id': 33034, }, ] monkeypatch.setattr( persister, 'get_top_open_orders', MagicMock(return_value=rows) ) result = physical_reporting.get_top_open_orders(vendor_ids, subacct_ids) persister.get_top_open_orders.assert_called_once_with( vendor_ids, US_SUPPLY_CHAIN, subacct_ids ) assert result == {'results': rows} def test_get_top_yesterday_shipments(monkeypatch): """Test get_top_yesterday_shipments calls persister with correct args.""" vendor_ids = [22221, 24583] rows = [ { 'yesterday_ship_qt': 400, 'artist_product': 'Artist A/Album X', 'local_product_cd': 'ABC123', 'vendor_id': 22221, 'subacct_id': 33034, }, { 'yesterday_ship_qt': 250, 'artist_product': 'Artist B/Album Y', 'local_product_cd': 'DEF456', 'vendor_id': 24583, 'subacct_id': 22321, }, ] monkeypatch.setattr( persister, 'get_top_yesterday_shipments', MagicMock(return_value=rows), ) result = physical_reporting.get_top_yesterday_shipments(vendor_ids) persister.get_top_yesterday_shipments.assert_called_once_with( vendor_ids, US_SUPPLY_CHAIN, None ) assert result == {'results': rows} def test_get_top_yesterday_shipments_with_subacct_ids(monkeypatch): """Test get_top_yesterday_shipments passes subacct_ids to persister.""" vendor_ids = [22221, 24583] subacct_ids = [33034, 22321] rows = [ { 'yesterday_ship_qt': 400, 'artist_product': 'Artist A/Album X', 'local_product_cd': 'ABC123', 'vendor_id': 22221, 'subacct_id': 33034, }, ] monkeypatch.setattr( persister, 'get_top_yesterday_shipments', MagicMock(return_value=rows), ) result = physical_reporting.get_top_yesterday_shipments( vendor_ids, subacct_ids ) persister.get_top_yesterday_shipments.assert_called_once_with( vendor_ids, US_SUPPLY_CHAIN, subacct_ids ) assert result == {'results': rows} def test_get_top_mtd_shipments(monkeypatch): """Test get_top_mtd_shipments calls persister with correct args.""" vendor_ids = [22221, 24583] rows = [ { 'mtd_ship_qt': 400, 'artist_product': 'Artist A/Album X', 'local_product_cd': 'ABC123', 'vendor_id': 22221, 'subacct_id': 33034, }, { 'mtd_ship_qt': 250, 'artist_product': 'Artist B/Album Y', 'local_product_cd': 'DEF456', 'vendor_id': 24583, 'subacct_id': 22321, }, ] monkeypatch.setattr( persister, 'get_top_mtd_shipments', MagicMock(return_value=rows), ) result = physical_reporting.get_top_mtd_shipments(vendor_ids) persister.get_top_mtd_shipments.assert_called_once_with( vendor_ids, US_SUPPLY_CHAIN, None ) assert result == {'results': rows} def test_get_top_mtd_shipments_with_subacct_ids(monkeypatch): """Test get_top_mtd_shipments passes subacct_ids to persister.""" vendor_ids = [22221, 24583] subacct_ids = [33034, 22321] rows = [ { 'mtd_ship_qt': 400, 'artist_product': 'Artist A/Album X', 'local_product_cd': 'ABC123', 'vendor_id': 22221, 'subacct_id': 33034, }, ] monkeypatch.setattr( persister, 'get_top_mtd_shipments', MagicMock(return_value=rows), ) result = physical_reporting.get_top_mtd_shipments(vendor_ids, subacct_ids) persister.get_top_mtd_shipments.assert_called_once_with( vendor_ids, US_SUPPLY_CHAIN, subacct_ids ) assert result == {'results': rows} def test_get_label_subaccount_summary(monkeypatch): """Test get_label_subaccount_summary calls persister with correct args.""" vendor_ids = [22221, 24583] rows = [ { 'label name': 'Fat Wreck Chords', 'sub label': 'Fat Wreck Chords', 'open orders': 500, 'vendor_id': 22221, 'subacct_id': 33034, }, { 'label name': 'Epitaph', 'sub label': 'Epitaph', 'open orders': 300, 'vendor_id': 24583, 'subacct_id': 22321, }, ] monkeypatch.setattr( persister, 'get_label_subaccount_summary', MagicMock(return_value=rows), ) result = physical_reporting.get_label_subaccount_summary(vendor_ids) persister.get_label_subaccount_summary.assert_called_once_with( vendor_ids, US_SUPPLY_CHAIN, None ) assert result == {'results': rows} def test_get_label_subaccount_summary_with_subacct_ids(monkeypatch): """Test get_label_subaccount_summary passes subacct_ids to persister.""" vendor_ids = [22221, 24583] subacct_ids = [33034] rows = [ { 'label name': 'Fat Wreck Chords', 'sub label': 'Fat Wreck Chords', 'open orders': 500, 'vendor_id': 22221, 'subacct_id': 33034, }, ] monkeypatch.setattr( persister, 'get_label_subaccount_summary', MagicMock(return_value=rows), ) result = physical_reporting.get_label_subaccount_summary( vendor_ids, subacct_ids ) persister.get_label_subaccount_summary.assert_called_once_with( vendor_ids, US_SUPPLY_CHAIN, subacct_ids ) assert result == {'results': rows} def test_get_product_detail(monkeypatch): """Test get_product_detail calls persister with correct args.""" vendor_ids = [1001, 1002] rows = [ { 'label_nm': 'Fat Wreck Chords', 'subacct_nm': 'Fat Wreck Chords', 'artist_nm': 'Good Riddance', 'product_nm': 'Peace in Our Time', 'product_cd': '709422', 'order_qt': 500, 'vendor_id': 1001, 'subacct_id': 7483, }, ] monkeypatch.setattr( persister, 'get_product_detail', MagicMock(return_value=rows), ) result = physical_reporting.get_product_detail(vendor_ids) persister.get_product_detail.assert_called_once_with( vendor_ids, US_SUPPLY_CHAIN, None ) assert result == {'results': rows} def test_get_product_detail_with_subacct_ids(monkeypatch): """Test get_product_detail passes subacct_ids to persister.""" vendor_ids = [1001, 1002] subacct_ids = [7483, 7484] rows = [ { 'label_nm': 'Fat Wreck Chords', 'subacct_nm': 'Fat Wreck Chords', 'artist_nm': 'Good Riddance', 'product_nm': 'Peace in Our Time', 'product_cd': '709422', 'order_qt': 500, 'vendor_id': 1001, 'subacct_id': 7483, }, ] monkeypatch.setattr( persister, 'get_product_detail', MagicMock(return_value=rows), ) result = physical_reporting.get_product_detail(vendor_ids, subacct_ids) persister.get_product_detail.assert_called_once_with( vendor_ids, US_SUPPLY_CHAIN, subacct_ids ) assert result == {'results': rows}