43 lines
2.1 KiB
Python
43 lines
2.1 KiB
Python
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, {})
|