Skip to content

Commit

Permalink
First fix
Browse files Browse the repository at this point in the history
  • Loading branch information
deniszh committed Feb 2, 2025
1 parent 7edba72 commit e9a57c1
Showing 1 changed file with 24 additions and 19 deletions.
43 changes: 24 additions & 19 deletions webapp/tests/test_attime.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,102 +11,107 @@
import pytz
import mock

def make_aware(dt, timezone):
if hasattr(timezone, 'localize'):
return timezone.localize(dt)
else:
return dt.replace(tzinfo=timezone)

def mockDateTime(year, month, day, hour, minute, second):
class MockedDateTime(datetime):
@classmethod
def now(cls, tzinfo=None):
if tzinfo:
return tzinfo.localize(cls(year, month, day, hour, minute, second))
return make_aware(cls(year, month, day, hour, minute, second), tzinfo)
return cls(year, month, day, hour, minute, second)

return MockedDateTime


@mock.patch('graphite.render.attime.datetime', mockDateTime(2015, 3, 8, 12, 0, 0))
class ATTimeTimezoneTests(TestCase):
default_tz = timezone.get_current_timezone()
specified_tz = pytz.timezone("America/Los_Angeles")
MOCK_DATE = specified_tz.localize(datetime(2015, 1, 1, 11, 00))
MOCK_DATE = make_aware(datetime(2015, 1, 1, 11, 00), specified_tz)

def test_should_return_absolute_time(self):
time_string = '12:0020150308'
expected_time = self.default_tz.localize(datetime.strptime(time_string,'%H:%M%Y%m%d'))
expected_time = make_aware(datetime.strptime(time_string,'%H:%M%Y%m%d'), self.default_tz)
actual_time = parseATTime(time_string)
self.assertEqual(actual_time, expected_time)

def test_absolute_time_should_respect_tz(self):
time_string = '12:0020150308'
expected_time = self.specified_tz.localize(datetime.strptime(time_string, '%H:%M%Y%m%d'))
expected_time = make_aware(datetime.strptime(time_string, '%H:%M%Y%m%d'), self.specified_tz)
actual_time = parseATTime(time_string, self.specified_tz)
self.assertEqual(actual_time, expected_time)

def test_should_return_absolute_time_short(self):
time_string = '9:0020150308'
expected_time = self.default_tz.localize(datetime.strptime(time_string,'%H:%M%Y%m%d'))
expected_time = make_aware(datetime.strptime(time_string,'%H:%M%Y%m%d'), self.default_tz)
actual_time = parseATTime(time_string)
self.assertEqual(actual_time, expected_time)

def test_absolute_time_should_respect_tz_short(self):
time_string = '9:0020150308'
expected_time = self.specified_tz.localize(datetime.strptime(time_string, '%H:%M%Y%m%d'))
expected_time = make_aware(datetime.strptime(time_string, '%H:%M%Y%m%d'), self.specified_tz)
actual_time = parseATTime(time_string, self.specified_tz)
self.assertEqual(actual_time, expected_time)

def test_absolute_time_YYYYMMDD(self):
time_string = '20150110'
expected_time = self.specified_tz.localize(datetime.strptime(time_string, '%Y%m%d'))
expected_time = make_aware(datetime.strptime(time_string, '%Y%m%d'), self.specified_tz)
actual_time = parseATTime(time_string, self.specified_tz)
self.assertEqual(actual_time, expected_time)

def test_midnight(self):
expected_time = self.specified_tz.localize(datetime.strptime("0:00_20150308", '%H:%M_%Y%m%d'))
expected_time = make_aware(datetime.strptime("0:00_20150308", '%H:%M_%Y%m%d'), self.specified_tz)
actual_time = parseATTime("midnight", self.specified_tz)
self.assertEqual(actual_time, expected_time)

def test_offset_with_tz(self):
expected_time = self.specified_tz.localize(datetime.strptime("1:00_20150308", '%H:%M_%Y%m%d'))
expected_time = make_aware(datetime.strptime("1:00_20150308", '%H:%M_%Y%m%d'), self.specified_tz)
actual_time = parseATTime("midnight+1h", self.specified_tz)
self.assertEqual(actual_time, expected_time)

def test_relative_day_with_tz(self):
expected_time = self.specified_tz.localize(datetime.strptime("0:00_20150309", '%H:%M_%Y%m%d'))
expected_time = make_aware(datetime.strptime("0:00_20150309", '%H:%M_%Y%m%d'), self.specified_tz)
actual_time = parseATTime("midnight_tomorrow", self.specified_tz)
self.assertEqual(actual_time, expected_time)

def test_relative_day_and_offset_with_tz(self):
expected_time = self.specified_tz.localize(datetime.strptime("3:00_20150309", '%H:%M_%Y%m%d'))
expected_time = make_aware(datetime.strptime("3:00_20150309", '%H:%M_%Y%m%d'), self.specified_tz)
actual_time = parseATTime("midnight_tomorrow+3h", self.specified_tz)
self.assertEqual(actual_time, expected_time)

def test_should_return_current_time(self):
expected_time = self.default_tz.localize(datetime.strptime("12:00_20150308", '%H:%M_%Y%m%d'))
expected_time = make_aware(datetime.strptime("12:00_20150308", '%H:%M_%Y%m%d'), self.default_tz)
actual_time = parseATTime("now")
self.assertEqual(actual_time, expected_time)

def test_now_should_respect_tz(self):
expected_time = self.specified_tz.localize(datetime.strptime("12:00_20150308", '%H:%M_%Y%m%d'))
expected_time = make_aware(datetime.strptime("12:00_20150308", '%H:%M_%Y%m%d'), self.specified_tz)
actual_time = parseATTime("now", self.specified_tz)
self.assertEqual(actual_time, expected_time)

def test_relative_time_in_alternate_zone(self):
expected_time = self.specified_tz.localize(datetime.strptime("11:00_20150308", '%H:%M_%Y%m%d'))
expected_time = make_aware(datetime.strptime("11:00_20150308", '%H:%M_%Y%m%d'), self.specified_tz)
actual_time = parseATTime("-1h", self.specified_tz)
self.assertEqual(actual_time.hour, expected_time.hour)

def test_should_handle_dst_boundary(self):
expected_time = self.specified_tz.localize(datetime.strptime("04:00_20150308", '%H:%M_%Y%m%d'))
expected_time = make_aware(datetime.strptime("04:00_20150308", '%H:%M_%Y%m%d'), self.specified_tz)
actual_time = parseATTime("midnight+3h", self.specified_tz)
self.assertEqual(actual_time, expected_time)

def test_parse_naive_datetime(self):
time_ref = parseATTime(datetime(self.MOCK_DATE.year, self.MOCK_DATE.month, self.MOCK_DATE.day, 8, 50), self.specified_tz)
expected = self.specified_tz.localize(datetime(self.MOCK_DATE.year, self.MOCK_DATE.month, self.MOCK_DATE.day, 8, 50))
expected = make_aware(datetime(self.MOCK_DATE.year, self.MOCK_DATE.month, self.MOCK_DATE.day, 8, 50), self.specified_tz)
self.assertEqual(time_ref, expected)

def test_parse_zone_aware_datetime(self):
time_ref = parseATTime(self.specified_tz.localize(datetime(self.MOCK_DATE.year, self.MOCK_DATE.month, self.MOCK_DATE.day, 8, 50)), self.specified_tz)
expected = self.specified_tz.localize(datetime(self.MOCK_DATE.year, self.MOCK_DATE.month, self.MOCK_DATE.day, 8, 50))
aware_dt = make_aware(datetime(self.MOCK_DATE.year, self.MOCK_DATE.month, self.MOCK_DATE.day, 8, 50), self.specified_tz)
time_ref = parseATTime(aware_dt, self.specified_tz)
expected = make_aware(datetime(self.MOCK_DATE.year, self.MOCK_DATE.month, self.MOCK_DATE.day, 8, 50), self.specified_tz)
self.assertEqual(time_ref, expected)


Expand Down

0 comments on commit e9a57c1

Please sign in to comment.