# -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. from odoo.addons.website_helpdesk_livechat.tests.helpdesk_livechat_chatbot_common import HelpdeskChatbotCase from odoo.tests import tagged, users @tagged("post_install", "-at_install") class TestChatbotCreateTicket(HelpdeskChatbotCase): @users('user_public') def test_chatbot_helpdesk_ticket_public_user(self): """ Create a ticket from a public user and check that information are correctly propagated. """ self._chatbot_create_helpdesk_ticket(self.user_public) created_ticket = self.env['helpdesk.ticket'].sudo().search([ ('name', '=', "Testing Bot's Ticket") ], limit=1) self.assertEqual(created_ticket.partner_email, 'helpme@example.com') self.assertEqual(created_ticket.partner_phone, '+32499112233') self.assertIn('There is a problem with my printer.', created_ticket.description) self.assertIn('helpme@example.com', created_ticket.description) self.assertIn('+32499112233', created_ticket.description) self.assertFalse(bool(created_ticket.team_id)) @users('user_portal') def test_chatbot_helpdesk_ticket_portal_user(self): """ Create a ticket from a portal user and check that information are correctly propagated. """ self.step_helpdesk_create_ticket.write({'helpdesk_team_id': self.helpdesk_team.id}) self._chatbot_create_helpdesk_ticket(self.user_portal) created_ticket = self.env['helpdesk.ticket'].sudo().search([ ('name', '=', "Testing Bot's Ticket") ], limit=1) # should use email defined on base partner since it's not empty self.assertNotEqual(created_ticket.partner_email, 'helpme@example.com', "") # phone however WAS empty -> check that it has been updated self.assertEqual(created_ticket.partner_phone, '+32499112233') self.assertEqual(created_ticket.team_id, self.helpdesk_team) def _chatbot_create_helpdesk_ticket(self, user): data = self.make_jsonrpc_request("/im_livechat/get_session", { 'anonymous_name': 'Test Visitor', 'channel_id': self.livechat_channel.id, 'chatbot_script_id': self.chatbot_script.id, 'user_id': user.id, }) discuss_channel = self.env['discuss.channel'].sudo().browse(data["discuss.channel"][0]['id']) self._post_answer_and_trigger_next_step( discuss_channel, self.step_selection_ticket.name, chatbot_script_answer=self.step_selection_ticket ) self.assertEqual(discuss_channel.chatbot_current_step_id, self.step_helpdesk_issue) self._post_answer_and_trigger_next_step(discuss_channel, 'There is a problem with my printer.') self.assertEqual(discuss_channel.chatbot_current_step_id, self.step_helpdesk_email) self._post_answer_and_trigger_next_step(discuss_channel, 'helpme@example.com') self.assertEqual(discuss_channel.chatbot_current_step_id, self.step_helpdesk_phone) self._post_answer_and_trigger_next_step(discuss_channel, '+32499112233') self.assertEqual(discuss_channel.chatbot_current_step_id, self.step_helpdesk_create_ticket)