Refine conference exploration day labels
This commit is contained in:
parent
6a601f5c14
commit
8866b78202
2 changed files with 216 additions and 1 deletions
|
|
@ -467,3 +467,153 @@ def test_trip_title_ignores_generated_drive_stop_labels() -> None:
|
|||
)
|
||||
|
||||
assert trip.title == "St Ives"
|
||||
|
||||
|
||||
def test_conference_free_days_ignores_morning_train_departure_after() -> None:
|
||||
"""A morning train on the day after a conference leaves no explore day."""
|
||||
trip = Trip(
|
||||
start=date(2027, 1, 29),
|
||||
conferences=[
|
||||
{
|
||||
"name": "FOSDEM",
|
||||
"start": date(2027, 1, 30),
|
||||
"end": date(2027, 1, 31),
|
||||
}
|
||||
],
|
||||
travel=[
|
||||
{
|
||||
"type": "train",
|
||||
"depart": datetime(2027, 2, 1, 8, 57, tzinfo=timezone.utc),
|
||||
"arrive": datetime(2027, 2, 1, 9, 57, tzinfo=timezone.utc),
|
||||
"legs": [
|
||||
{
|
||||
"depart": datetime(2027, 2, 1, 8, 57, tzinfo=timezone.utc),
|
||||
"arrive": datetime(2027, 2, 1, 9, 57, tzinfo=timezone.utc),
|
||||
}
|
||||
],
|
||||
}
|
||||
],
|
||||
)
|
||||
|
||||
assert agenda.trip.conference_free_days(trip)["2027-01-30"] == (1, 0)
|
||||
|
||||
|
||||
def test_conference_free_days_ignores_afternoon_train_arrival_before() -> None:
|
||||
"""An afternoon train on the day before a conference leaves no explore day."""
|
||||
trip = Trip(
|
||||
start=date(2027, 1, 29),
|
||||
conferences=[
|
||||
{
|
||||
"name": "FOSDEM",
|
||||
"start": date(2027, 1, 30),
|
||||
"end": date(2027, 1, 31),
|
||||
}
|
||||
],
|
||||
travel=[
|
||||
{
|
||||
"type": "train",
|
||||
"depart": datetime(2027, 1, 29, 13, 4, tzinfo=timezone.utc),
|
||||
"arrive": datetime(2027, 1, 29, 16, 5, tzinfo=timezone.utc),
|
||||
"legs": [
|
||||
{
|
||||
"depart": datetime(2027, 1, 29, 13, 4, tzinfo=timezone.utc),
|
||||
"arrive": datetime(2027, 1, 29, 16, 5, tzinfo=timezone.utc),
|
||||
}
|
||||
],
|
||||
}
|
||||
],
|
||||
)
|
||||
|
||||
assert agenda.trip.conference_free_days(trip)["2027-01-30"] == (0, 0)
|
||||
|
||||
|
||||
def test_conference_free_days_keeps_morning_train_arrival_before() -> None:
|
||||
"""A morning train arrival still leaves the afternoon to explore."""
|
||||
trip = Trip(
|
||||
start=date(2027, 1, 29),
|
||||
conferences=[
|
||||
{
|
||||
"name": "FOSDEM",
|
||||
"start": date(2027, 1, 30),
|
||||
"end": date(2027, 1, 31),
|
||||
}
|
||||
],
|
||||
travel=[
|
||||
{
|
||||
"type": "train",
|
||||
"depart": datetime(2027, 1, 29, 8, 0, tzinfo=timezone.utc),
|
||||
"arrive": datetime(2027, 1, 29, 11, 30, tzinfo=timezone.utc),
|
||||
}
|
||||
],
|
||||
)
|
||||
|
||||
assert agenda.trip.conference_free_days(trip)["2027-01-30"] == (1, 0)
|
||||
|
||||
|
||||
def test_conference_free_days_keeps_date_only_arrival_before() -> None:
|
||||
"""Date-only travel should not be treated as a known afternoon arrival."""
|
||||
trip = Trip(
|
||||
start=date(2027, 1, 29),
|
||||
conferences=[
|
||||
{
|
||||
"name": "FOSDEM",
|
||||
"start": date(2027, 1, 30),
|
||||
"end": date(2027, 1, 31),
|
||||
}
|
||||
],
|
||||
travel=[
|
||||
{
|
||||
"type": "train",
|
||||
"depart": date(2027, 1, 29),
|
||||
"arrive": date(2027, 1, 29),
|
||||
}
|
||||
],
|
||||
)
|
||||
|
||||
assert agenda.trip.conference_free_days(trip)["2027-01-30"] == (1, 0)
|
||||
|
||||
|
||||
def test_conference_free_days_keeps_afternoon_train_departure_after() -> None:
|
||||
"""An afternoon train still leaves the morning to explore."""
|
||||
trip = Trip(
|
||||
start=date(2027, 1, 29),
|
||||
conferences=[
|
||||
{
|
||||
"name": "FOSDEM",
|
||||
"start": date(2027, 1, 30),
|
||||
"end": date(2027, 1, 31),
|
||||
}
|
||||
],
|
||||
travel=[
|
||||
{
|
||||
"type": "train",
|
||||
"depart": datetime(2027, 2, 1, 13, 4, tzinfo=timezone.utc),
|
||||
"arrive": datetime(2027, 2, 1, 16, 5, tzinfo=timezone.utc),
|
||||
}
|
||||
],
|
||||
)
|
||||
|
||||
assert agenda.trip.conference_free_days(trip)["2027-01-30"] == (1, 1)
|
||||
|
||||
|
||||
def test_conference_free_days_keeps_date_only_departure_after() -> None:
|
||||
"""Date-only travel should not be treated as a known morning departure."""
|
||||
trip = Trip(
|
||||
start=date(2027, 1, 29),
|
||||
conferences=[
|
||||
{
|
||||
"name": "FOSDEM",
|
||||
"start": date(2027, 1, 30),
|
||||
"end": date(2027, 1, 31),
|
||||
}
|
||||
],
|
||||
travel=[
|
||||
{
|
||||
"type": "train",
|
||||
"depart": date(2027, 2, 1),
|
||||
"arrive": date(2027, 2, 1),
|
||||
}
|
||||
],
|
||||
)
|
||||
|
||||
assert agenda.trip.conference_free_days(trip)["2027-01-30"] == (1, 1)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue