47 lines
2.0 KiB
Python
47 lines
2.0 KiB
Python
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
from datetime import date, datetime
|
|
from odoo.tests.common import tagged, TransactionCase, HttpCase, freeze_time
|
|
|
|
|
|
@freeze_time('2021-01-01')
|
|
@tagged('post_install', '-at_install')
|
|
class TestFreezeTimeClassDecorator(TransactionCase):
|
|
|
|
def test_freeze_time_class_decorator(self):
|
|
self.assertEqual(datetime.now().strftime('%Y-%m-%d %H:%M:%S'), '2021-01-01 00:00:00')
|
|
|
|
|
|
@tagged('post_install', '-at_install')
|
|
class TestFreezeTimeMethodDecorator(TransactionCase):
|
|
|
|
@freeze_time('2022-02-02')
|
|
def test_freeze_time_method_decorator(self):
|
|
self.assertEqual(datetime.now().strftime('%Y-%m-%d %H:%M:%S'), '2022-02-02 00:00:00')
|
|
|
|
@freeze_time(date(2023, 3, 3))
|
|
def test_freeze_time_method_decorator_with_date(self):
|
|
self.assertEqual(datetime.now().strftime('%Y-%m-%d %H:%M:%S'), '2023-03-03 00:00:00')
|
|
|
|
|
|
@tagged('post_install', '-at_install')
|
|
@freeze_time(datetime(2024, 4, 4, 4, 4))
|
|
class TestHttpCaseFreezeTimeClassDecorator(HttpCase):
|
|
|
|
def test_http_freeze_time_class_decorator(self):
|
|
self.assertEqual(datetime.now().strftime('%Y-%m-%d %H:%M:%S'), '2024-04-04 04:04:00')
|
|
|
|
def test_http_freeze_time_class_decorator_two(self):
|
|
"""Test that another method is still patched"""
|
|
self.assertEqual(datetime.now().strftime('%Y-%m-%d %H:%M:%S'), '2024-04-04 04:04:00')
|
|
|
|
|
|
@tagged('post_install', '-at_install')
|
|
class TestFreezeTimeContextManager(TransactionCase):
|
|
|
|
def test_freeze_time_context_manager(self):
|
|
self.assertNotEqual(datetime.now().strftime('%Y-%m-%d %H:%M:%S'), '2024-04-04 04:04:00', "The datetime should not be altered by a freeze_time from the previous class")
|
|
with freeze_time('2025-05-05 05:05') as frozen_time:
|
|
self.assertEqual(datetime.now().strftime('%Y-%m-%d %H:%M:%S'), '2025-05-05 05:05:00')
|
|
frozen_time.move_to('2026-06-06 06:06')
|
|
self.assertEqual(datetime.now().strftime('%Y-%m-%d %H:%M'), '2026-06-06 06:06')
|