136 lines
6.7 KiB
Python
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)
|