test_qc_material_stock_in_no.py 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. """质检物料入库编号:RK + YYYYMMDD + 3位序号。"""
  2. import unittest
  3. from datetime import date
  4. from app.crud.qc_material_stock_in_no import (
  5. format_stock_in_no,
  6. max_seq_from_stock_in_nos,
  7. next_stock_in_nos,
  8. )
  9. class TestFormatStockInNo(unittest.TestCase):
  10. def test_format(self):
  11. self.assertEqual(format_stock_in_no(date(2026, 8, 19), 1), "RK20260819001")
  12. self.assertEqual(format_stock_in_no(date(2026, 8, 19), 12), "RK20260819012")
  13. self.assertEqual(format_stock_in_no(date(2026, 8, 19), 999), "RK20260819999")
  14. class TestMaxSeq(unittest.TestCase):
  15. def test_empty(self):
  16. self.assertEqual(max_seq_from_stock_in_nos("RK20260819", []), 0)
  17. def test_parses_matching_prefix(self):
  18. nos = ["RK20260819001", "RK20260819007", "OTHER", "RK20260818099"]
  19. self.assertEqual(max_seq_from_stock_in_nos("RK20260819", nos), 7)
  20. def test_ignores_bad_suffix(self):
  21. nos = ["RK20260819ABC", "RK20260819100"]
  22. self.assertEqual(max_seq_from_stock_in_nos("RK20260819", nos), 100)
  23. class TestNextStockInNos(unittest.TestCase):
  24. def test_allocates_contiguous(self):
  25. got = next_stock_in_nos(date(2026, 8, 19), count=3, existing_nos=["RK20260819002"])
  26. self.assertEqual(got, ["RK20260819003", "RK20260819004", "RK20260819005"])
  27. def test_zero_count(self):
  28. self.assertEqual(next_stock_in_nos(date(2026, 8, 19), count=0, existing_nos=[]), [])