Files
zkxw/backend/tests/test_oa_money_field.py
T
zlwuandCursor 55e4134050 feat(backend): validate OA money field values on instance start
Reject negatives, non-finite values, and missing required money controls.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-30 11:04:30 +08:00

48 lines
1.9 KiB
Python

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()