[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).
This commit is contained in:
@@ -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')
|
||||
|
||||
|
||||
Reference in New Issue
Block a user