mirror of https://github.com/OCA/social.git
211 lines
10 KiB
Python
211 lines
10 KiB
Python
# Copyright 2024 Tecnativa - Víctor Martínez
|
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
|
|
|
from odoo.exceptions import UserError
|
|
from odoo.tests import Form, new_test_user
|
|
from odoo.tests.common import users
|
|
|
|
from odoo.addons.base.tests.common import BaseCommon
|
|
|
|
|
|
class TestMailActivityPlan(BaseCommon):
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
super().setUpClass()
|
|
cls.user_plan = new_test_user(
|
|
cls.env,
|
|
login="test_user_plan",
|
|
groups="base.group_user,base.group_partner_manager",
|
|
)
|
|
cls.user_extra = new_test_user(cls.env, login="test_user_extra")
|
|
cls.user_admin = cls.env.ref("base.user_admin")
|
|
cls.user_demo = cls.env.ref("base.user_demo")
|
|
cls.group_1 = cls.env["res.groups"].create(
|
|
{
|
|
"name": "Test group 1",
|
|
"users": [(4, cls.user_plan.id)],
|
|
}
|
|
)
|
|
cls.group_2 = cls.env["res.groups"].create(
|
|
{
|
|
"name": "Test group 2",
|
|
"users": [(4, cls.user_plan.id)],
|
|
}
|
|
)
|
|
cls.plan_1 = cls.env.ref("mail_activity_plan.mail_activity_plan_demo_1")
|
|
cls.plan_1.group_ids = [(6, 0, cls.group_1.ids)]
|
|
cls.plan_2 = cls.env.ref("mail_activity_plan.mail_activity_plan_demo_2")
|
|
cls.plan_2.group_ids = [(6, 0, cls.group_2.ids)]
|
|
cls.partner = cls.env["res.partner"].create(
|
|
{"name": "Test partner", "user_id": cls.user_extra.id}
|
|
)
|
|
cls.partner_extra = cls.env["res.partner"].create(
|
|
{"name": "Test partner extra", "user_id": cls.user_extra.id}
|
|
)
|
|
cls.activity_type_email = cls.env.ref("mail.mail_activity_data_email")
|
|
cls.activity_type_call = cls.env.ref("mail.mail_activity_data_call")
|
|
cls.activity_type_todo = cls.env.ref("mail.mail_activity_data_todo")
|
|
|
|
def _action_wizard_mail_activity_plan(self, records):
|
|
action = self.env["ir.actions.act_window"]._for_xml_id(
|
|
"mail_activity_plan.action_wizard_mail_activity_plan"
|
|
)
|
|
ctx = dict(
|
|
self.env.context,
|
|
active_ids=records.ids,
|
|
default_res_model=records._name,
|
|
)
|
|
return self.env[action["res_model"]].with_context(**ctx).create({})
|
|
|
|
@users("test_user_extra")
|
|
def test_wizard_mail_activity_plan_0(self):
|
|
self.partner = self.partner.with_user(self.env.user)
|
|
wizard = self._action_wizard_mail_activity_plan(self.partner)
|
|
self.assertFalse(wizard.allowed_activity_plans)
|
|
# Add user to group 1
|
|
self.user_extra.groups_id = [(4, self.group_1.id)]
|
|
wizard._compute_allowed_activity_plans()
|
|
self.assertIn(self.plan_1, wizard.allowed_activity_plans)
|
|
self.assertNotIn(self.plan_2, wizard.allowed_activity_plans)
|
|
# Add user to group 2
|
|
self.user_extra.groups_id = [(4, self.group_2.id)]
|
|
wizard._compute_allowed_activity_plans()
|
|
self.assertIn(self.plan_1, wizard.allowed_activity_plans)
|
|
self.assertIn(self.plan_2, wizard.allowed_activity_plans)
|
|
|
|
@users("test_user_plan")
|
|
def test_wizard_mail_activity_plan_1(self):
|
|
self.partner = self.partner.with_user(self.env.user)
|
|
wizard = self._action_wizard_mail_activity_plan(self.partner)
|
|
self.assertIn(self.plan_1, wizard.allowed_activity_plans)
|
|
self.assertIn(self.plan_2, wizard.allowed_activity_plans)
|
|
self.assertFalse(wizard.detail_ids)
|
|
wizard_form = Form(wizard)
|
|
wizard_form.activity_plan_id = self.plan_1
|
|
wizard_form.save()
|
|
self.assertEqual(len(wizard.detail_ids), 3)
|
|
self.assertNotIn("Satisfaction survey", wizard.mapped("detail_ids.summary"))
|
|
detail_1 = wizard.detail_ids.filtered(lambda x: x.summary == "Wellcome mail")
|
|
self.assertEqual(detail_1.activity_type_id, self.activity_type_email)
|
|
self.assertEqual(detail_1.user_id, self.user_admin)
|
|
detail_2 = wizard.detail_ids.filtered(lambda x: x.summary == "First call")
|
|
self.assertEqual(detail_2.activity_type_id, self.activity_type_call)
|
|
self.assertEqual(detail_2.user_id, self.user_admin)
|
|
detail_3 = wizard.detail_ids.filtered(lambda x: x.summary == "Send a quotation")
|
|
self.assertEqual(detail_3.activity_type_id, self.activity_type_todo)
|
|
self.assertEqual(detail_3.user_id, self.user_demo)
|
|
# action_launch to create activities
|
|
activities = wizard.action_launch()
|
|
self.assertEqual(len(activities), 3)
|
|
activity_1 = activities.filtered(lambda x: x.summary == "Wellcome mail")
|
|
self.assertEqual(activity_1.activity_type_id, self.activity_type_email)
|
|
self.assertEqual(activity_1.user_id, self.user_admin)
|
|
activity_2 = activities.filtered(lambda x: x.summary == "First call")
|
|
self.assertEqual(activity_2.activity_type_id, self.activity_type_call)
|
|
self.assertEqual(activity_2.user_id, self.user_admin)
|
|
activity_3 = activities.filtered(lambda x: x.summary == "Send a quotation")
|
|
self.assertEqual(activity_3.activity_type_id, self.activity_type_todo)
|
|
self.assertEqual(activity_3.user_id, self.user_demo)
|
|
self.assertNotIn("Satisfaction survey", activities.mapped("summary"))
|
|
|
|
@users("test_user_plan")
|
|
def test_wizard_mail_activity_plan_2(self):
|
|
self.partner = self.partner.with_user(self.env.user)
|
|
wizard = self._action_wizard_mail_activity_plan(self.partner)
|
|
self.assertIn(self.plan_1, wizard.allowed_activity_plans)
|
|
self.assertIn(self.plan_2, wizard.allowed_activity_plans)
|
|
self.assertFalse(wizard.detail_ids)
|
|
wizard_form = Form(wizard)
|
|
wizard_form.activity_plan_id = self.plan_2
|
|
wizard_form.save()
|
|
self.assertEqual(len(wizard.detail_ids), 4)
|
|
detail_1 = wizard.detail_ids.filtered(lambda x: x.summary == "Wellcome mail")
|
|
self.assertEqual(detail_1.activity_type_id, self.activity_type_email)
|
|
self.assertEqual(detail_1.user_id, self.user_admin)
|
|
detail_2 = wizard.detail_ids.filtered(lambda x: x.summary == "First call")
|
|
self.assertEqual(detail_2.activity_type_id, self.activity_type_call)
|
|
self.assertEqual(detail_2.user_id, self.user_admin)
|
|
detail_3 = wizard.detail_ids.filtered(lambda x: x.summary == "Send a quotation")
|
|
self.assertEqual(detail_3.activity_type_id, self.activity_type_todo)
|
|
self.assertEqual(detail_3.user_id, self.user_demo)
|
|
detail_4 = wizard.detail_ids.filtered(
|
|
lambda x: x.summary == "Satisfaction survey"
|
|
)
|
|
self.assertEqual(detail_4.activity_type_id, self.activity_type_todo)
|
|
self.assertEqual(detail_4.user_id, self.user_extra)
|
|
# action_launch to create activities
|
|
activities = wizard.action_launch()
|
|
self.assertEqual(len(activities), 4)
|
|
activity_1 = activities.filtered(lambda x: x.summary == "Wellcome mail")
|
|
self.assertEqual(activity_1.activity_type_id, self.activity_type_email)
|
|
self.assertEqual(activity_1.user_id, self.user_admin)
|
|
activity_2 = activities.filtered(lambda x: x.summary == "First call")
|
|
self.assertEqual(activity_2.activity_type_id, self.activity_type_call)
|
|
self.assertEqual(activity_2.user_id, self.user_admin)
|
|
activity_3 = activities.filtered(lambda x: x.summary == "Send a quotation")
|
|
self.assertEqual(activity_3.activity_type_id, self.activity_type_todo)
|
|
self.assertEqual(activity_3.user_id, self.user_demo)
|
|
activity_4 = activities.filtered(lambda x: x.summary == "Satisfaction survey")
|
|
self.assertEqual(activity_4.activity_type_id, self.activity_type_todo)
|
|
self.assertEqual(activity_4.user_id, self.user_extra)
|
|
|
|
@users("test_user_plan")
|
|
def test_wizard_mail_activity_plan_3(self):
|
|
self.partner = self.partner.with_user(self.env.user)
|
|
self.partner.user_id = False
|
|
wizard = self._action_wizard_mail_activity_plan(self.partner)
|
|
wizard_form = Form(wizard)
|
|
with self.assertRaises(UserError):
|
|
wizard_form.activity_plan_id = self.plan_2
|
|
|
|
@users("test_user_plan")
|
|
def test_wizard_mail_activity_plan_4(self):
|
|
partners = self.partner + self.partner_extra
|
|
wizard = self._action_wizard_mail_activity_plan(partners)
|
|
wizard_form = Form(wizard)
|
|
wizard_form.activity_plan_id = self.plan_1
|
|
wizard_form.save()
|
|
self.assertEqual(len(wizard.detail_ids), 6)
|
|
activities = wizard.action_launch()
|
|
# activities_partner
|
|
activities_partner = activities.filtered(
|
|
lambda x: x.res_model == self.partner._name and x.res_id == self.partner.id
|
|
)
|
|
self.assertEqual(len(activities_partner), 3)
|
|
activity_1 = activities_partner.filtered(lambda x: x.summary == "Wellcome mail")
|
|
self.assertEqual(activity_1.activity_type_id, self.activity_type_email)
|
|
self.assertEqual(activity_1.user_id, self.user_admin)
|
|
activity_2 = activities_partner.filtered(lambda x: x.summary == "First call")
|
|
self.assertEqual(activity_2.activity_type_id, self.activity_type_call)
|
|
self.assertEqual(activity_2.user_id, self.user_admin)
|
|
activity_3 = activities_partner.filtered(
|
|
lambda x: x.summary == "Send a quotation"
|
|
)
|
|
self.assertEqual(activity_3.activity_type_id, self.activity_type_todo)
|
|
self.assertEqual(activity_3.user_id, self.user_demo)
|
|
self.assertNotIn("Satisfaction survey", activities_partner.mapped("summary"))
|
|
# activities_partner_extra
|
|
activities_partner_extra = activities.filtered(
|
|
lambda x: x.res_model == self.partner_extra._name
|
|
and x.res_id == self.partner_extra.id
|
|
)
|
|
self.assertEqual(len(activities_partner_extra), 3)
|
|
activity_1 = activities_partner_extra.filtered(
|
|
lambda x: x.summary == "Wellcome mail"
|
|
)
|
|
self.assertEqual(activity_1.activity_type_id, self.activity_type_email)
|
|
self.assertEqual(activity_1.user_id, self.user_admin)
|
|
activity_2 = activities_partner_extra.filtered(
|
|
lambda x: x.summary == "First call"
|
|
)
|
|
self.assertEqual(activity_2.activity_type_id, self.activity_type_call)
|
|
self.assertEqual(activity_2.user_id, self.user_admin)
|
|
activity_3 = activities_partner_extra.filtered(
|
|
lambda x: x.summary == "Send a quotation"
|
|
)
|
|
self.assertEqual(activity_3.activity_type_id, self.activity_type_todo)
|
|
self.assertEqual(activity_3.user_id, self.user_demo)
|
|
self.assertNotIn(
|
|
"Satisfaction survey", activities_partner_extra.mapped("summary")
|
|
)
|