Skip to content

Commit

Permalink
Fix CronTrigger deserialization for JSONSerializer
Browse files Browse the repository at this point in the history
  • Loading branch information
tdzienniak committed Dec 1, 2023
1 parent 3a8977c commit 991ae5e
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 2 deletions.
2 changes: 1 addition & 1 deletion src/apscheduler/triggers/cron/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ class CronTrigger(Trigger):
end_time: datetime | None = attrs.field(converter=as_aware_datetime, default=None)
timezone: tzinfo = attrs.field(converter=as_timezone, factory=get_localzone)
_fields: list[BaseField] = attrs.field(init=False, eq=False, factory=list)
_last_fire_time: datetime | None = attrs.field(init=False, eq=False, default=None)
_last_fire_time: datetime | None = attrs.field(converter=as_aware_datetime, init=False, eq=False, default=None)

def __attrs_post_init__(self) -> None:
self._set_fields(
Expand Down
6 changes: 5 additions & 1 deletion tests/triggers/test_cron.py
Original file line number Diff line number Diff line change
Expand Up @@ -89,10 +89,14 @@ def test_cron_trigger_1(timezone, serializer):
start_time=start_time,
timezone=timezone,
)

# since `next` is modifying the trigger, we call it before serializing
# to make sure the serialization works correctly also for modified triggers
assert trigger.next() == datetime(2009, 1, 5, tzinfo=timezone)

if serializer:
trigger = serializer.deserialize(serializer.serialize(trigger))

assert trigger.next() == datetime(2009, 1, 5, tzinfo=timezone)
assert trigger.next() == datetime(2009, 1, 6, tzinfo=timezone)
assert trigger.next() == datetime(2009, 4, 5, tzinfo=timezone)
assert trigger.next() == datetime(2009, 4, 6, tzinfo=timezone)
Expand Down

0 comments on commit 991ae5e

Please sign in to comment.