fix(fusion_tasks): make datetime inverses use the same tz resolver as compute
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2
fusion_tasks/tests/__init__.py
Normal file
2
fusion_tasks/tests/__init__.py
Normal file
@@ -0,0 +1,2 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from . import test_task_tz
|
||||
39
fusion_tasks/tests/test_task_tz.py
Normal file
39
fusion_tasks/tests/test_task_tz.py
Normal file
@@ -0,0 +1,39 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from datetime import date
|
||||
from odoo.tests.common import TransactionCase, tagged
|
||||
|
||||
|
||||
@tagged('post_install', '-at_install')
|
||||
class TestTaskTz(TransactionCase):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super().setUpClass()
|
||||
# _compute_datetimes resolves company resource-calendar tz FIRST, then user tz.
|
||||
# Set BOTH to Toronto so the UTC assertion and the round-trip are deterministic.
|
||||
cls.env.user.tz = 'America/Toronto'
|
||||
cal = cls.env.company.resource_calendar_id
|
||||
if cal:
|
||||
cal.tz = 'America/Toronto'
|
||||
# technician_id is required (domain x_fc_is_field_staff=True) -> make a field tech.
|
||||
cls.tech = cls.env['res.users'].create({
|
||||
'name': 'TZ Test Tech',
|
||||
'login': 'tz_test_tech_svcbook',
|
||||
'x_fc_is_field_staff': True,
|
||||
})
|
||||
cls.task = cls.env['fusion.technician.task'].create({
|
||||
'technician_id': cls.tech.id,
|
||||
'scheduled_date': date(2026, 6, 3),
|
||||
'time_start': 9.0,
|
||||
'time_end': 10.0,
|
||||
})
|
||||
|
||||
def test_local_to_utc_compute(self):
|
||||
# 9:00 local Toronto (EDT, -4) -> 13:00 UTC stored
|
||||
self.assertEqual(self.task.datetime_start.hour, 13)
|
||||
|
||||
def test_inverse_round_trips_with_same_tz(self):
|
||||
# writing datetime_start back recovers the same local time_start
|
||||
self.task.datetime_start = self.task.datetime_start # force inverse
|
||||
self.task.flush_recordset(['datetime_start'])
|
||||
self.assertAlmostEqual(self.task.time_start, 9.0, places=2)
|
||||
Reference in New Issue
Block a user