[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:
Thibault Delavallée
2018-06-07 13:59:02 +02:00
parent c00df14654
commit 60614d9961
+15 -8
View File
@@ -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')