import unittest from app.services.oa_money_field import validate_money_form_values class TestValidateMoneyFormValues(unittest.TestCase): def test_ok_number(self): schema = {"rule": [{"type": "money", "field": "amt", "title": "金额", "$required": True}]} self.assertEqual(validate_money_form_values(schema, {"amt": 1234.56}), []) def test_ok_int(self): schema = {"rule": [{"type": "money", "field": "amt"}]} self.assertEqual(validate_money_form_values(schema, {"amt": 10}), []) def test_ok_null_optional(self): schema = {"rule": [{"type": "money", "field": "amt", "$required": False}]} self.assertEqual(validate_money_form_values(schema, {"amt": None}), []) self.assertEqual(validate_money_form_values(schema, {}), []) def test_required_missing(self): schema = { "rule": [{"type": "money", "field": "amt", "title": "报销金额", "$required": True}] } errs = validate_money_form_values(schema, {}) self.assertTrue(any("报销金额" in e for e in errs)) def test_negative_rejected(self): schema = {"rule": [{"type": "money", "field": "amt"}]} errs = validate_money_form_values(schema, {"amt": -1}) self.assertTrue(len(errs) >= 1) def test_string_number_accepted(self): schema = {"rule": [{"type": "money", "field": "amt"}]} self.assertEqual(validate_money_form_values(schema, {"amt": "12.5"}), []) def test_bool_rejected(self): schema = {"rule": [{"type": "money", "field": "amt"}]} errs = validate_money_form_values(schema, {"amt": True}) self.assertTrue(len(errs) >= 1) def test_ignore_other_types(self): schema = {"rule": [{"type": "input", "field": "x", "$required": True}]} self.assertEqual(validate_money_form_values(schema, {}), []) if __name__ == "__main__": unittest.main()