import unittest from pathlib import Path from unittest.mock import patch from routes import purchase class FinishedQianyuInventoryTest(unittest.TestCase): def test_finished_list_uses_imported_cached_transit_function(self): source = (Path(__file__).resolve().parents[1] / 'routes/purchase.py').read_text( encoding='utf-8') self.assertNotIn('compute_product_in_transit()', source) self.assertIn('transit_map = compute_product_in_transit_cached()', source) def test_split_cloud_stock_without_changing_shared_map(self): cloud = {'SKU': 4935, 'OTHER': 10} with patch.object(purchase, 'compute_cloud_inventory_cached', return_value=cloud), \ patch.object(purchase, 'query', side_effect=[ [{'product_code': 'SKU', 'quantity': 3956}], [{'warehouse_code': '035'}] ]) as query: available, qianyu = purchase._finished_inventory_maps() self.assertEqual(available, {'SKU': 979, 'OTHER': 10}) self.assertEqual(qianyu, {'SKU': 3956}) self.assertEqual(cloud['SKU'], 4935) self.assertIn('MAX(data_date)', query.call_args_list[0].args[0]) self.assertIn('CAST(warehouse_code AS UNSIGNED) = 35', query.call_args_list[0].args[0]) def test_non_cloud_qianyu_is_displayed_without_subtracting_twice(self): with patch.object(purchase, 'compute_cloud_inventory_cached', return_value={'SKU': 979}), \ patch.object(purchase, 'query', side_effect=[ [{'product_code': 'SKU', 'quantity': 3956}], [] ]): available, qianyu = purchase._finished_inventory_maps() self.assertEqual(available['SKU'], 979) self.assertEqual(qianyu['SKU'], 3956) def test_no_qianyu_inventory(self): with patch.object(purchase, 'compute_cloud_inventory_cached', return_value={'SKU': 10}), \ patch.object(purchase, 'query', side_effect=[[], [{'warehouse_code': '35'}]]): available, qianyu = purchase._finished_inventory_maps() self.assertEqual(available, {'SKU': 10}) self.assertEqual(qianyu, {})