| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- """样本运费:运输方式字典解析与关联规则"""
- import unittest
- from decimal import Decimal
- from unittest.mock import MagicMock
- from app.services.sample_transport_mode import resolve_transport_mode_value
- class TestResolveTransportMode(unittest.TestCase):
- def test_empty_raises(self):
- db = MagicMock()
- with self.assertRaises(ValueError):
- resolve_transport_mode_value(db, tenant_no="zkxw", raw="", user_id=None)
- def test_hit_by_value(self):
- db = MagicMock()
- type_exists = MagicMock()
- row = MagicMock(dict_value="sfkd", dict_label="顺丰快递", del_flag=0)
- db.query.return_value.filter.return_value.first.side_effect = [type_exists, row]
- self.assertEqual(
- resolve_transport_mode_value(db, tenant_no="zkxw", raw="sfkd", user_id=None),
- "sfkd",
- )
- def test_hit_by_label_then_create_path_not_called(self):
- db = MagicMock()
- type_exists = MagicMock()
- miss = None
- hit = MagicMock(dict_value="zxc", dict_label="专线车", del_flag=0)
- db.query.return_value.filter.return_value.first.side_effect = [
- type_exists,
- miss,
- hit,
- ]
- self.assertEqual(
- resolve_transport_mode_value(db, tenant_no="zkxw", raw="专线车", user_id=None),
- "zxc",
- )
- db.add.assert_not_called()
- class TestFreightAmountValidation(unittest.TestCase):
- def test_negative_rejected(self):
- from app.crud.sample_freight import _parse_amount
- with self.assertRaises(ValueError):
- _parse_amount(-1)
- def test_zero_ok(self):
- from app.crud.sample_freight import _parse_amount
- self.assertEqual(_parse_amount(0), Decimal("0"))
- def test_empty_rejected(self):
- from app.crud.sample_freight import _parse_amount
- with self.assertRaises(ValueError):
- _parse_amount(None)
- with self.assertRaises(ValueError):
- _parse_amount("")
- if __name__ == "__main__":
- unittest.main()
|