| OLD | NEW |
| (Empty) |
| 1 # Copyright 2015 The Chromium Authors. All rights reserved. | |
| 2 # Use of this source code is governed by a BSD-style license that can be | |
| 3 # found in the LICENSE file. | |
| 4 | |
| 5 import datetime | |
| 6 import mock | |
| 7 import pytz | |
| 8 import unittest | |
| 9 | |
| 10 from infra_libs.time_functions.testing import mock_datetime_utc, mock_timezone | |
| 11 | |
| 12 original_datetime = datetime.datetime | |
| 13 | |
| 14 class TestFreezeTime(unittest.TestCase): | |
| 15 @mock_datetime_utc(2015, 11, 24, 7, 18, 23) | |
| 16 @mock_timezone('US/Pacific') | |
| 17 def test_mocks_datetime_and_timezone(self): | |
| 18 self.assertEqual(datetime.datetime.utcnow(), | |
| 19 datetime.datetime(2015, 11, 24, 7, 18, 23)) | |
| 20 self.assertEqual(datetime.datetime.now(), | |
| 21 datetime.datetime(2015, 11, 23, 23, 18, 23)) | |
| 22 self.assertEqual(datetime.datetime.now(tz=pytz.timezone('Europe/Berlin')), | |
| 23 datetime.datetime(2015, 11, 24, 8, 18, 23)) | |
| 24 self.assertEqual(datetime.datetime.today(), datetime.date(2015, 11, 23)) | |
| 25 self.assertEqual(datetime.date.today(), datetime.date(2015, 11, 23)) | |
| 26 self.assertEqual(datetime.datetime.fromtimestamp(0), | |
| 27 datetime.datetime(1969, 12, 31, 16, 0, 0)) | |
| 28 self.assertEqual( | |
| 29 datetime.datetime.fromtimestamp(0, tz=pytz.timezone('Europe/Berlin')), | |
| 30 datetime.datetime(1970, 1, 1, 1, 0, 0)) | |
| 31 self.assertEqual(datetime.date.fromtimestamp(0), | |
| 32 datetime.date(1969, 12, 31)) | |
| 33 | |
| 34 # Try accessing standard class attributes and methods. | |
| 35 self.assertEqual(datetime.datetime.min, original_datetime.min) | |
| 36 self.assertEqual(datetime.datetime.utcfromtimestamp(0), | |
| 37 datetime.datetime(1970, 1, 1, 0, 0, 0)) | |
| 38 | |
| 39 # Check that creating normal datetimes and working with them works. | |
| 40 dt = datetime.datetime(2015, 10, 1, 1, 1, 1) | |
| 41 dt += datetime.timedelta(hours=2) | |
| 42 self.assertEqual(dt, datetime.datetime(2015, 10, 1, 3, 1, 1)) | |
| 43 d = datetime.date(2015, 10, 1) | |
| 44 d += datetime.timedelta(days=5) | |
| 45 self.assertEqual(d, datetime.date(2015, 10, 6)) | |
| 46 | |
| 47 # Check that isinstance method works as expected. | |
| 48 dt = datetime.datetime.utcnow() # dt is _MockDateTime | |
| 49 self.assertTrue(isinstance(dt, datetime.datetime)) | |
| 50 dt += datetime.timedelta(hours=1) # dt is vanilla datatime.datetime | |
| 51 self.assertTrue(isinstance(dt, datetime.datetime)) | |
| 52 d = datetime.datetime.today() # d is _MockDate | |
| 53 self.assertTrue(isinstance(d, datetime.date)) | |
| 54 d += datetime.timedelta(days=1) # d is vanilla datatime.date | |
| 55 self.assertTrue(isinstance(d, datetime.date)) | |
| 56 | |
| 57 | |
| 58 @mock_datetime_utc(2015, 11, 24, 7, 0, 0) | |
| 59 def test_nested_mock_works(self): | |
| 60 self.assertEqual(datetime.datetime.utcnow().hour, 7) | |
| 61 | |
| 62 @mock_datetime_utc(2015, 11, 24, 10, 0, 0) | |
| 63 def nested_func(): | |
| 64 self.assertEqual(datetime.datetime.utcnow().hour, 10) | |
| 65 nested_func() | |
| 66 | |
| 67 self.assertEqual(datetime.datetime.utcnow().hour, 7) | |
| 68 | |
| 69 @mock_datetime_utc(2015, 11, 24, 9, 10, 15) | |
| 70 @mock_timezone('US/Pacific') | |
| 71 def test_winter_time_is_computed_correctly(self): | |
| 72 self.assertEqual(datetime.datetime.now(), | |
| 73 datetime.datetime(2015, 11, 24, 1, 10, 15)) | |
| 74 | |
| 75 @mock_datetime_utc(2015, 8, 24, 9, 10, 15) | |
| 76 @mock_timezone('US/Pacific') | |
| 77 def test_summer_time_is_computed_correctly(self): | |
| 78 self.assertEqual(datetime.datetime.now(), | |
| 79 datetime.datetime(2015, 8, 24, 2, 10, 15)) | |
| OLD | NEW |