Skip to content

Commit 87b9116

Browse files
committed
add unit tests.
1 parent c4e75d2 commit 87b9116

File tree

1 file changed

+26
-1
lines changed

1 file changed

+26
-1
lines changed

tests/test_scheduler_fn.py

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
"""Scheduler function tests."""
1515

1616
import unittest
17-
from datetime import datetime
17+
from datetime import datetime, timezone
1818
from unittest.mock import Mock
1919

2020
from flask import Flask, Request
@@ -81,6 +81,30 @@ def test_on_schedule_call(self):
8181
)
8282
)
8383

84+
def test_on_schedule_call_with_z_suffix(self):
85+
"""
86+
Tests to ensure that timestamps with 'Z' suffix are parsed correctly as UTC.
87+
"""
88+
with Flask(__name__).test_request_context("/"):
89+
environ = EnvironBuilder(
90+
headers={
91+
"X-CloudScheduler-JobName": "example-job",
92+
"X-CloudScheduler-ScheduleTime": "2023-04-13T19:00:00Z",
93+
}
94+
).get_environ()
95+
mock_request = Request(environ)
96+
example_func = Mock(__name__="example_func")
97+
decorated_func = scheduler_fn.on_schedule(schedule="* * * * *")(example_func)
98+
response = decorated_func(mock_request)
99+
100+
self.assertEqual(response.status_code, 200)
101+
example_func.assert_called_once_with(
102+
scheduler_fn.ScheduledEvent(
103+
job_name="example-job",
104+
schedule_time=datetime(2023, 4, 13, 19, 0, 0, tzinfo=timezone.utc),
105+
)
106+
)
107+
84108
def test_on_schedule_call_with_no_headers(self):
85109
"""
86110
Tests to ensure that if the function is called manually
@@ -99,6 +123,7 @@ def test_on_schedule_call_with_no_headers(self):
99123
self.assertEqual(example_func.call_count, 1)
100124
self.assertIsNone(example_func.call_args[0][0].job_name)
101125
self.assertIsNotNone(example_func.call_args[0][0].schedule_time)
126+
self.assertIsNotNone(example_func.call_args[0][0].schedule_time.tzinfo)
102127

103128
def test_on_schedule_call_with_exception(self):
104129
"""

0 commit comments

Comments
 (0)