"""质检物料批次列表:剩余库存过滤语义。""" import unittest from decimal import Decimal from app.crud.qc_material_batch_stock_status import ( batch_matches_stock_status, normalize_batch_stock_status, ) class TestNormalizeBatchStockStatus(unittest.TestCase): def test_available_and_exhausted(self): self.assertEqual(normalize_batch_stock_status("available"), "available") self.assertEqual(normalize_batch_stock_status("exhausted"), "exhausted") self.assertEqual(normalize_batch_stock_status(" Available "), "available") def test_all_empty_invalid_map_to_none(self): self.assertIsNone(normalize_batch_stock_status(None)) self.assertIsNone(normalize_batch_stock_status("")) self.assertIsNone(normalize_batch_stock_status("all")) self.assertIsNone(normalize_batch_stock_status("bogus")) class TestBatchMatchesStockStatus(unittest.TestCase): def test_all_always_true(self): self.assertTrue(batch_matches_stock_status(0, "all")) self.assertTrue(batch_matches_stock_status(1, None)) def test_available_gt_zero(self): self.assertTrue(batch_matches_stock_status(Decimal("0.1"), "available")) self.assertFalse(batch_matches_stock_status(0, "available")) self.assertFalse(batch_matches_stock_status(Decimal("0"), "available")) def test_exhausted_eq_zero(self): self.assertTrue(batch_matches_stock_status(0, "exhausted")) self.assertTrue(batch_matches_stock_status(Decimal("0.0000"), "exhausted")) self.assertFalse(batch_matches_stock_status(1, "exhausted"))