test_qc_material_batch_stock_status.py 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. """质检物料批次列表:剩余库存过滤语义。"""
  2. import unittest
  3. from decimal import Decimal
  4. from app.crud.qc_material_batch_stock_status import (
  5. batch_matches_stock_status,
  6. normalize_batch_stock_status,
  7. )
  8. class TestNormalizeBatchStockStatus(unittest.TestCase):
  9. def test_available_and_exhausted(self):
  10. self.assertEqual(normalize_batch_stock_status("available"), "available")
  11. self.assertEqual(normalize_batch_stock_status("exhausted"), "exhausted")
  12. self.assertEqual(normalize_batch_stock_status(" Available "), "available")
  13. def test_all_empty_invalid_map_to_none(self):
  14. self.assertIsNone(normalize_batch_stock_status(None))
  15. self.assertIsNone(normalize_batch_stock_status(""))
  16. self.assertIsNone(normalize_batch_stock_status("all"))
  17. self.assertIsNone(normalize_batch_stock_status("bogus"))
  18. class TestBatchMatchesStockStatus(unittest.TestCase):
  19. def test_all_always_true(self):
  20. self.assertTrue(batch_matches_stock_status(0, "all"))
  21. self.assertTrue(batch_matches_stock_status(1, None))
  22. def test_available_gt_zero(self):
  23. self.assertTrue(batch_matches_stock_status(Decimal("0.1"), "available"))
  24. self.assertFalse(batch_matches_stock_status(0, "available"))
  25. self.assertFalse(batch_matches_stock_status(Decimal("0"), "available"))
  26. def test_exhausted_eq_zero(self):
  27. self.assertTrue(batch_matches_stock_status(0, "exhausted"))
  28. self.assertTrue(batch_matches_stock_status(Decimal("0.0000"), "exhausted"))
  29. self.assertFalse(batch_matches_stock_status(1, "exhausted"))