Files
zkxw/backend/tests/test_qc_material_batch_stock_status.py
zlwuandCursor 0f461851b5 feat(backend): add QC material batch stockStatus helpers.
Normalize available/exhausted filter values and document remaining_qty matching for list filtering.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-18 09:36:33 +08:00

38 lines
1.6 KiB
Python

"""质检物料批次列表:剩余库存过滤语义。"""
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"))