| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- """oa_trip_days unit tests"""
- from app.services.oa_trip_days import (
- apply_trip_kit_days,
- calc_trip_leg_days,
- sum_trip_leg_days,
- validate_trip_kit_form_values,
- )
- def test_half_day_samples():
- assert calc_trip_leg_days("2026-08-01", "上午", "2026-08-01", "上午") == 0.5
- assert calc_trip_leg_days("2026-08-01", "上午", "2026-08-01", "下午") == 1.0
- assert calc_trip_leg_days("2026-08-01", "下午", "2026-08-01", "上午") is None
- assert calc_trip_leg_days("2026-08-01", "下午", "2026-08-02", "上午") == 1.0
- def test_sum():
- assert sum_trip_leg_days([{"duration": 0.5}, {"duration": 2}]) == 2.5
- def test_apply_overwrites_when_not_manual():
- schema = [
- {
- "type": "tripKit",
- "props": {"tripListField": "L1", "tripDaysField": "D1"},
- "children": [
- {"type": "tripItinerary", "field": "L1", "props": {"_fc_kit_field": "tripList"}},
- {"type": "inputNumber", "field": "D1", "props": {"_fc_kit_field": "tripDays"}},
- ],
- }
- ]
- data = {
- "L1": [
- {
- "transport": "飞机",
- "tripType": "单程",
- "fromCity": "合肥",
- "toCity": "上海",
- "startDate": "2026-08-01",
- "startHalf": "上午",
- "endDate": "2026-08-01",
- "endHalf": "下午",
- "duration": 9,
- "durationManual": False,
- }
- ],
- "D1": 9,
- }
- out = apply_trip_kit_days(schema, data)
- assert out["L1"][0]["duration"] == 1.0
- assert out["D1"] == 1.0
- def test_respect_manual_flags():
- schema = [
- {
- "type": "tripKit",
- "props": {"tripListField": "L1", "tripDaysField": "D1"},
- "children": [
- {"type": "tripItinerary", "field": "L1", "props": {"_fc_kit_field": "tripList"}},
- {"type": "inputNumber", "field": "D1", "props": {"_fc_kit_field": "tripDays"}},
- ],
- }
- ]
- data = {
- "L1": [
- {
- "startDate": "2026-08-01",
- "startHalf": "上午",
- "endDate": "2026-08-01",
- "endHalf": "下午",
- "duration": 3,
- "durationManual": True,
- "transport": "火车",
- "tripType": "往返",
- "fromCity": "a",
- "toCity": "b",
- }
- ],
- "D1": 7,
- "__manual_D1": True,
- }
- out = apply_trip_kit_days(schema, data)
- assert out["L1"][0]["duration"] == 3
- assert out["D1"] == 7
- def test_validate_end_before_start():
- schema = [
- {
- "type": "tripKit",
- "props": {"tripListField": "L1", "tripDaysField": "D1"},
- "children": [
- {"type": "tripItinerary", "field": "L1", "props": {"_fc_kit_field": "tripList"}},
- {"type": "inputNumber", "field": "D1", "props": {"_fc_kit_field": "tripDays"}},
- ],
- }
- ]
- data = {
- "L1": [
- {
- "transport": "飞机",
- "tripType": "单程",
- "fromCity": "a",
- "toCity": "b",
- "startDate": "2026-08-01",
- "startHalf": "下午",
- "endDate": "2026-08-01",
- "endHalf": "上午",
- "duration": 0.5,
- "durationManual": True,
- }
- ],
- "D1": 0.5,
- }
- errs = validate_trip_kit_form_values(schema, data)
- assert errs
|