Initial commit: Mail packages

This commit is contained in:
Ernad Husremovic 2025-08-29 15:20:51 +02:00
commit 4e53507711
1948 changed files with 751201 additions and 0 deletions

View file

@ -0,0 +1,4 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from . import test_calendar_sms

View file

@ -0,0 +1,116 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from datetime import datetime, timedelta
from odoo import fields
from odoo.addons.sms.tests.common import SMSCase
from odoo.tests.common import TransactionCase
class TestCalendarSms(TransactionCase, SMSCase):
@classmethod
def setUpClass(cls):
super(TestCalendarSms, cls).setUpClass()
now = fields.datetime.now()
cls.partner_phone = cls.env['res.partner'].create({
'name': 'Partner With Phone Number',
'phone': '0477777777',
'country_id': cls.env.ref('base.be').id,
})
cls.partner_phone_2 = cls.env['res.partner'].create({
'name': 'Partner With Phone Number',
'phone': '0488888888',
'country_id': cls.env.ref('base.be').id,
})
cls.partner_phone_3 = cls.env['res.partner'].create({
'name': 'Partner With Phone Number',
'phone': '0499999999',
'country_id': cls.env.ref('base.be').id,
})
cls.partner_no_phone = cls.env['res.partner'].create({
'name': 'Partner With No Phone Number',
'country_id': cls.env.ref('base.be').id,
})
cls.alarm_1h = cls.env['calendar.alarm'].create({
'name': 'Reminder 1 Hour',
'duration': 1,
'interval': 'hours',
'alarm_type': 'sms',
})
cls.alarm_24h = cls.env['calendar.alarm'].create({
'name': 'Reminder 24 Hours',
'duration': 24,
'interval': 'hours',
'alarm_type': 'sms',
})
cls.event_1h = cls.env['calendar.event'].create({
'name': 'Event in 1h',
'start': now + timedelta(hours=1),
'stop': now + timedelta(hours=2),
'alarm_ids': [(4, cls.alarm_1h.id), (4, cls.alarm_24h.id)],
'attendee_ids': [(0, 0, {'partner_id': cls.partner_phone.id})],
})
cls.event_1h_dup = cls.env['calendar.event'].create({
'name': 'Event in 1h',
'start': now + timedelta(hours=1),
'stop': now + timedelta(hours=2),
'alarm_ids': [(4, cls.alarm_1h.id), (4, cls.alarm_24h.id)],
'attendee_ids': [(0, 0, {'partner_id': cls.partner_phone_3.id})],
})
cls.event_24h = cls.env['calendar.event'].create({
'name': 'Event in 24h',
'start': now + timedelta(hours=24),
'stop': now + timedelta(hours=25),
'alarm_ids': [(4, cls.alarm_1h.id), (4, cls.alarm_24h.id)],
'attendee_ids': [(0, 0, {'partner_id': cls.partner_phone_2.id})],
})
cls.sms_template_1h = cls.env['sms.template'].create({
'name': 'Calendar Alarm SMS Template',
'body': 'Reminder: Your event is starting in 1 hour!',
'model_id': cls.env['ir.model']._get('calendar.event').id,
})
cls.alarm_1h.sms_template_id = cls.sms_template_1h.id
cls.sms_template_24h = cls.env['sms.template'].create({
'name': 'Calendar Alarm SMS Template',
'body': 'Reminder: Your event is starting in 24 hour!',
'model_id': cls.env['ir.model']._get('calendar.event').id,
})
cls.alarm_24h.sms_template_id = cls.sms_template_24h.id
def test_attendees_with_number(self):
"""Test if only partners with sanitized number are returned."""
attendees = self.env['calendar.event'].create({
'name': "Boostrap vs Foundation",
'start': datetime(2022, 1, 1, 11, 11),
'stop': datetime(2022, 2, 2, 22, 22),
'partner_ids': [(6, 0, [self.partner_phone.id, self.partner_no_phone.id])],
})._sms_get_default_partners()
self.assertEqual(len(attendees), 1, "There should be only one partner retrieved")
def test_send_reminder_match_both_events(self):
"""
Test that only the necessary SMS messages are sent,
with each SMS template correctly matching its corresponding alarm duration and the event.
"""
with self.mockSMSGateway():
lastcall = fields.Datetime.now() - timedelta(hours=1)
self.env['calendar.alarm_manager'].with_context(lastcall=lastcall)._send_reminder()
self.assertEqual(len(self._sms), 3)
self.assertSMS(self.partner_phone, self.partner_phone.phone_sanitized, 'sent',
content=self.sms_template_1h.body)
self.assertSMS(self.partner_phone_2, self.partner_phone_2.phone_sanitized, 'sent',
content=self.sms_template_24h.body)