Odoo18-Base/odoo/addons/test_testing_utilities/tests/test_freeze_time.py
2025-01-06 10:57:38 +07:00

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')