| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- """oa_datetime_normalize:PC/小程序 datetime 到秒对齐与历史到分兼容"""
- from app.services.oa_datetime_normalize import normalize_datetime_form_values
- def test_pad_minute_only_when_datetime_default_expects_seconds():
- schema = {
- "rule": [
- {
- "type": "datePicker",
- "field": "useTime",
- "title": "用车时间",
- "props": {"type": "datetime"},
- }
- ]
- }
- data = {"useTime": "2026-10-20 09:00", "other": "x"}
- out = normalize_datetime_form_values(schema, data)
- assert out["useTime"] == "2026-10-20 09:00:00"
- assert out["other"] == "x"
- assert data["useTime"] == "2026-10-20 09:00" # 不改入参
- def test_leave_as_is_when_already_has_seconds():
- schema = {
- "rule": [
- {
- "type": "datePicker",
- "field": "t",
- "props": {"type": "datetime", "valueFormat": "YYYY-MM-DD HH:mm:ss"},
- }
- ]
- }
- out = normalize_datetime_form_values(schema, {"t": "2026-10-14 08:20:00"})
- assert out["t"] == "2026-10-14 08:20:00"
- def test_skip_when_schema_explicitly_minute_only():
- """请假/加班套件显式到分,不得补秒。"""
- schema = {
- "rule": [
- {
- "type": "datePicker",
- "field": "start",
- "props": {
- "type": "datetime",
- "format": "YYYY-MM-DD HH:mm",
- "valueFormat": "YYYY-MM-DD HH:mm",
- },
- }
- ]
- }
- out = normalize_datetime_form_values(schema, {"start": "2026-10-20 09:00"})
- assert out["start"] == "2026-10-20 09:00"
- def test_skip_plain_date_fields():
- schema = {
- "rule": [
- {"type": "datePicker", "field": "d", "title": "日期"},
- ]
- }
- out = normalize_datetime_form_values(schema, {"d": "2026-10-20"})
- assert out["d"] == "2026-10-20"
- def test_pad_nested_kit_children_only_when_seconds():
- schema = {
- "rule": [
- {
- "type": "leaveKit",
- "field": "kit",
- "children": [
- {
- "type": "datePicker",
- "field": "leaveStart",
- "props": {
- "type": "datetime",
- "valueFormat": "YYYY-MM-DD HH:mm",
- },
- },
- {
- "type": "datePicker",
- "field": "carTime",
- "props": {"type": "datetime"},
- },
- ],
- }
- ]
- }
- out = normalize_datetime_form_values(
- schema,
- {"leaveStart": "2026-10-20 09:00", "carTime": "2026-10-20 09:00"},
- )
- assert out["leaveStart"] == "2026-10-20 09:00"
- assert out["carTime"] == "2026-10-20 09:00:00"
- def test_pad_datetimerange_list():
- schema = {
- "rule": [
- {
- "type": "datePicker",
- "field": "rng",
- "props": {"type": "datetimerange"},
- }
- ]
- }
- out = normalize_datetime_form_values(
- schema, {"rng": ["2026-10-20 09:00", "2026-10-20 18:30"]}
- )
- assert out["rng"] == ["2026-10-20 09:00:00", "2026-10-20 18:30:00"]
|