From 60614d99619e157de7ca680e91df598386dceacb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Thu, 7 Jun 2018 00:43:55 +0200 Subject: [PATCH] [FIX] test_mail: fix timezone issue in activity test Due to timezone difference between two test users the state of activities depend on the time when the test is running. Indeed if user 1 plans an activity for tomorrow this could already be today for user 2. Test that ensure tomorrow is correctly computed should therefore be done with users being in the same timezone. Current behavior is correct as activities manipulate date that cannot always be timezoned back to another timezone. How to reproduce the issue before this fix: run the activity mixin tests between 0:00 and 1:00 in +1 TZ (Brussels). --- addons/test_mail/tests/test_mail_activity.py | 23 +++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/addons/test_mail/tests/test_mail_activity.py b/addons/test_mail/tests/test_mail_activity.py index 64c87a43cc7..4319db9e49e 100644 --- a/addons/test_mail/tests/test_mail_activity.py +++ b/addons/test_mail/tests/test_mail_activity.py @@ -1,14 +1,17 @@ # -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. -from datetime import date +from datetime import date, datetime from dateutil.relativedelta import relativedelta -from odoo import exceptions +import pytz + +from odoo import exceptions, tests from odoo.addons.test_mail.tests.common import BaseFunctionalTest from odoo.tools import mute_logger - + +@tests.tagged('mail_activity') class TestMailActivity(BaseFunctionalTest): @classmethod @@ -70,14 +73,18 @@ class TestMailActivity(BaseFunctionalTest): }) def test_activity_mixin(self): - today = date.today() + self.user_employee.tz = self.user_admin.tz with self.sudoAs('ernest'): self.assertEqual(self.test_record.env.user, self.user_employee) + now_utc = datetime.now(pytz.UTC) + now_user = now_utc.astimezone(pytz.timezone(self.env.user.tz or 'UTC')) + today_user = now_user.date() + # Test various scheduling of activities act1 = self.test_record.activity_schedule( 'test_mail.mail_act_test_todo', - today + relativedelta(days=1), + today_user + relativedelta(days=1), user_id=self.user_admin.id) self.assertEqual(act1.automated, True) @@ -88,13 +95,13 @@ class TestMailActivity(BaseFunctionalTest): act2 = self.test_record.activity_schedule( 'test_mail.mail_act_test_meeting', - today + relativedelta(days=-1)) + today_user + relativedelta(days=-1)) self.assertEqual(self.test_record.activity_state, 'overdue') self.assertEqual(self.test_record.activity_user_id, self.user_employee) act3 = self.test_record.activity_schedule( 'test_mail.mail_act_test_todo', - today + relativedelta(days=3), + today_user + relativedelta(days=3), user_id=self.user_employee.id) self.assertEqual(self.test_record.activity_state, 'overdue') self.assertEqual(self.test_record.activity_user_id, self.user_employee) @@ -113,7 +120,7 @@ class TestMailActivity(BaseFunctionalTest): self.assertEqual(self.test_record.activity_state, 'overdue') self.test_record.activity_reschedule( ['test_mail.mail_act_test_meeting', 'test_mail.mail_act_test_todo'], - date_deadline=today + relativedelta(days=3) + date_deadline=today_user + relativedelta(days=3) ) self.assertEqual(self.test_record.activity_state, 'planned')