Reject negatives, non-finite values, and missing required money controls. Co-authored-by: Cursor <cursoragent@cursor.com>
48 lines
1.9 KiB
Python
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()
|