"""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"]