# Part of Odoo. See LICENSE file for full copyright and licensing details. from odoo import http from odoo.tests.common import HttpCase, tagged from odoo.tools import html2plaintext @tagged('-at_install', 'post_install') class TestWebsiteProject(HttpCase): @classmethod def setUpClass(cls): super().setUpClass() cls.test_project = cls.env['project.project'].create({'name': 'Project_1'}) cls.test_partner = cls.env['res.partner'].create({ 'name': 'Test Partner', 'email': 'test@partner.com', }) def test_portal_task_submission(self): """ Public user should be able to submit a task""" self.authenticate(None, None) task_data = { 'name': "test_task_portal", 'email_from': 'test@test.com', 'description': 'This test task is created by Portal', 'project_id': self.test_project.id, 'csrf_token': http.Request.csrf_token(self), 'partner_phone': '+5 555-555-555', 'partner_name': 'Bagha kumar', 'partner_company_name': 'Boulangerie Vortex', } response = self.url_open('/website/form/project.task', data=task_data) task = self.env['project.task'].browse(response.json().get('id')) self.assertTrue(task.exists()) self.assertFalse(task.partner_id, "Partner id should be False") self.assertEqual(task.email_cc, 'test@test.com', "email_cc should be same as added on website") self.assertIn('EXTERNAL SUBMISSION - Customer not verified', html2plaintext(task.description), "Warning message should be displayed in description of task") mail_message = task.message_ids.filtered(lambda m: m.body == '
/!\\ EXTERNAL SUBMISSION - Customer not verified
') self.assertEqual(len(mail_message), 1, "Alert message should be displayed in the chatter of the task created.") self.assertEqual(mail_message.author_id, self.env.ref('base.partner_root'), 'The author of the warning message should be OdooBot.') def test_admin_task_submission(self): """ Admin should be able to submit a task""" self.authenticate("admin", "admin") task_data = { 'name': "test_task_admin", 'email_from': 'test@partner.com', 'description': 'This test task is created by Admin', 'project_id': self.test_project.id, 'csrf_token': http.Request.csrf_token(self), 'partner_phone': '+5 555-555-555', 'partner_name': 'Bagha kumar', 'partner_company_name': 'Boulangerie Vortex', } response = self.url_open('/website/form/project.task', data=task_data) task = self.env['project.task'].browse(response.json().get('id')) self.assertTrue(task.exists()) self.assertEqual(task.partner_id, self.test_partner, "Partner id should not be False") self.assertFalse(task.email_cc, "email_cc field should be empty") admin_user = self.env.ref('base.user_admin') asserttext = '%s (%s)' % (admin_user.name, admin_user.email) self.assertIn('This Task was submitted by %s on behalf of test@partner.com' % asserttext, html2plaintext(task.description), "Warning message should be displayed in description of task") mail_message = task.message_ids.filtered(lambda m: m.body == '
This Task was submitted by %s on behalf of test@partner.com
' % asserttext) self.assertEqual(len(mail_message), 1, "Alert message should be displayed in the chatter of the task created.")