crm/tests/test_crm_lead_smart_calendar.py

136 lines
6.7 KiB
Python

# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from datetime import date, datetime
from odoo.addons.mail.tests.common import mail_new_test_user
from odoo.addons.crm.tests.common import TestCrmCommon
from odoo.tests.common import tagged, users
@tagged('post_install', '-at_install')
class TestCRMLeadSmartCalendar(TestCrmCommon):
@classmethod
def setUpClass(cls):
super(TestCRMLeadSmartCalendar, cls).setUpClass()
# weekstart index : 7 (sunday), tz : UTC -4 / -5
cls.user_NY_en_US = mail_new_test_user(
cls.env, login='user_NY_en_US', lang='en_US', tz='America/New_York',
name='user_NY_en_US User', email='user_NY_en_US@test.example.com',
notification_type='inbox',
groups='sales_team.group_sale_salesman_all_leads,base.group_partner_manager,crm.group_use_lead')
# weekstart index : 1 (monday), tz : UTC+0
cls.env['res.lang']._activate_lang('pt_PT')
cls.user_UTC_pt_PT = mail_new_test_user(
cls.env, login='user_UTC_pt_PT', lang='pt_PT', tz='Europe/Lisbon',
name='user_UTC_pt_PT User', email='user_UTC_pt_PT@test.example.com',
notification_type='inbox',
groups='sales_team.group_sale_salesman_all_leads,base.group_partner_manager,crm.group_use_lead')
cls.next_year = datetime.now().year + 1
cls.calendar_meeting_1 = cls.env['calendar.event'].create({
'name': 'calendar_meeting_1',
'start': datetime(2020, 12, 13, 17),
'stop': datetime(2020, 12, 13, 22)})
cls.calendar_meeting_2 = cls.env['calendar.event'].create({
'name': 'calendar_meeting_2',
'start': datetime(2020, 12, 13, 2),
'stop': datetime(2020, 12, 13, 3)})
cls.calendar_meeting_3 = cls.env['calendar.event'].create({
'name': 'calendar_meeting_3',
'start': datetime(cls.next_year, 5, 4, 12),
'stop': datetime(cls.next_year, 5, 4, 13)})
cls.calendar_meeting_4 = cls.env['calendar.event'].create({
'name': 'calendar_meeting_4',
'allday': True,
'start': datetime(2020, 12, 6, 0, 0, 0),
'stop': datetime(2020, 12, 6, 23, 59, 59)})
cls.calendar_meeting_5 = cls.env['calendar.event'].create({
'name': 'calendar_meeting_5',
'start': datetime(2020, 12, 13, 8),
'stop': datetime(2020, 12, 13, 18),
'allday': True})
cls.calendar_meeting_6 = cls.env['calendar.event'].create({
'name': 'calendar_meeting_6',
'start': datetime(2020, 12, 12, 0),
'stop': datetime(2020, 12, 19, 0)})
@users('user_NY_en_US')
def test_meeting_view_parameters_1(self):
lead_smart_calendar_1 = self.env['crm.lead'].create({'name': 'Lead 1 - user_NY_en_US'})
mode, initial_date = lead_smart_calendar_1._get_opportunity_meeting_view_parameters()
self.assertEqual(mode, 'week')
self.assertEqual(initial_date, False)
self.calendar_meeting_1.write({'opportunity_id': lead_smart_calendar_1.id})
mode, initial_date = lead_smart_calendar_1._get_opportunity_meeting_view_parameters()
self.assertEqual(mode, 'week')
self.assertEqual(initial_date, date(2020, 12, 13))
self.calendar_meeting_2.write({'opportunity_id': lead_smart_calendar_1.id})
mode, initial_date = lead_smart_calendar_1._get_opportunity_meeting_view_parameters()
self.assertEqual(mode, 'month')
self.assertEqual(initial_date, date(2020, 12, 12))
self.calendar_meeting_3.write({'opportunity_id': lead_smart_calendar_1.id})
mode, initial_date = lead_smart_calendar_1._get_opportunity_meeting_view_parameters()
self.assertEqual(mode, 'week')
self.assertEqual(initial_date, date(self.next_year, 5, 4))
lead_smart_calendar_2 = self.env['crm.lead'].create({'name': 'Lead 2 - user_NY_en_US'})
self.calendar_meeting_4.write({'opportunity_id': lead_smart_calendar_2.id})
mode, initial_date = lead_smart_calendar_2._get_opportunity_meeting_view_parameters()
self.assertEqual(mode, 'week')
self.assertEqual(initial_date, date(2020, 12, 6))
self.calendar_meeting_2.write({'opportunity_id': lead_smart_calendar_2.id})
mode, initial_date = lead_smart_calendar_2._get_opportunity_meeting_view_parameters()
self.assertEqual(mode, 'week')
self.assertEqual(initial_date, date(2020, 12, 6))
self.calendar_meeting_5.write({'opportunity_id': lead_smart_calendar_2.id})
mode, initial_date = lead_smart_calendar_2._get_opportunity_meeting_view_parameters()
self.assertEqual(mode, 'month')
self.assertEqual(initial_date, date(2020, 12, 6))
@users('user_UTC_pt_PT')
def test_meeting_view_parameters_2(self):
lead_smart_calendar_1 = self.env['crm.lead'].create({'name': 'Lead 1 - user_UTC_pt_PT'})
self.calendar_meeting_1.write({'opportunity_id': lead_smart_calendar_1.id})
self.calendar_meeting_2.write({'opportunity_id': lead_smart_calendar_1.id})
mode, initial_date = lead_smart_calendar_1._get_opportunity_meeting_view_parameters()
self.assertEqual(mode, 'week')
self.assertEqual(initial_date, date(2020, 12, 13))
self.calendar_meeting_3.write({'opportunity_id': lead_smart_calendar_1.id})
mode, initial_date = lead_smart_calendar_1._get_opportunity_meeting_view_parameters()
self.assertEqual(mode, 'week')
self.assertEqual(initial_date, date(self.next_year, 5, 4))
lead_smart_calendar_2 = self.env['crm.lead'].create({'name': 'Lead 2 - user_UTC_pt_PT'})
self.calendar_meeting_6.write({'opportunity_id': lead_smart_calendar_2.id})
mode, initial_date = lead_smart_calendar_2._get_opportunity_meeting_view_parameters()
self.assertEqual(mode, 'week')
self.assertEqual(initial_date, date(2020, 12, 12))
@users('user_sales_leads')
def test_meeting_creation_from_lead_form(self):
""" When going from a lead to the Calendar and adding a meeting, both salesman and customer
should be attendees of the event """
lead = self.env['crm.lead'].create({
'name': 'SuperLead',
'partner_id': self.contact_1.id,
})
calendar_action = lead.action_schedule_meeting()
event = self.env['calendar.event'].with_context(calendar_action['context']).create({
'start': datetime(2020, 12, 13, 17),
'stop': datetime(2020, 12, 13, 22),
})
self.assertEqual(len(event.attendee_ids), 2)
self.assertIn(self.user_sales_leads.partner_id, event.attendee_ids.partner_id)
self.assertIn(self.contact_1, event.attendee_ids.partner_id)