Files

89 lines
3.7 KiB
Python

# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
import json
from odoo.addons.mail_plugin.tests.common import TestMailPluginControllerCommon, mock_auth_method_outlook
from odoo.addons.mail.tests.common import MailCase
class TestHelpdeskClient(TestMailPluginControllerCommon, MailCase):
@mock_auth_method_outlook('employee')
def test_ticket_creation_notification(self):
"""Test the ticket creation using the mail plugin endpoint.
Test that the ticket is created, with the
- name set with the email subject
- description set with the email body
- user set with the current logged user
Check also that the acknowledgement email has been sent.
"""
self.user_test.group_ids |= self.env.ref('helpdesk.group_helpdesk_user')
customer = self.env['res.partner'].create({'name': 'Customer', 'email': '[email protected]'})
email_body = 'Test email body'
email_subject = 'Test email subject'
messages_info = [{
'content': 'The reference for your ticket is',
'message_type': 'auto_comment',
'subtype': 'mail.mt_note',
'email_values': {
'email_from': self.env.company.email_formatted,
},
'notif': [{'partner': customer, 'type': 'email', 'status': 'sent'}],
}, {
'content': '',
'message_type': 'notification',
'email_values': {
'email_from': self.env.company.email_formatted,
},
'subtype': 'helpdesk.mt_ticket_new',
'notif': [],
}]
with self.assertPostNotifications(messages_info):
ticket_id = self.make_jsonrpc_request('/mail_plugin/ticket/create', {
'email_body': email_body,
'email_subject': email_subject,
'partner_id': customer.id,
}).get('ticket_id')
self.env['mail.mail'].process_email_queue()
self.assertTrue(bool(ticket_id))
ticket = self.env['helpdesk.ticket'].browse(ticket_id)
self.assertTrue(bool(ticket))
self.assertIn(email_body, ticket.description)
self.assertEqual(ticket.name, email_subject)
self.assertEqual(ticket.user_id, self.user_test)
@mock_auth_method_outlook('admin')
def test_ticket_filter_folded_for_contact_data(self):
"""Ensure open tickets are sent in priority to the outlook client."""
partner = self.env['res.partner'].create([
{'name': 'Partner 1'},
])
folded_stage = self.env['helpdesk.stage'].create({
'name': 'Closed',
'fold': True,
})
closed_tickets = self.env['helpdesk.ticket'].create([
{'name': 'Ticket Closed 1', 'partner_id': partner.id, 'stage_id': folded_stage.id},
{'name': 'Ticket Closed 2', 'partner_id': partner.id, 'stage_id': folded_stage.id},
])
open_tickets = self.env['helpdesk.ticket'].create([
{'name': 'Ticket Open 1', 'partner_id': partner.id},
{'name': 'Ticket Open 2', 'partner_id': partner.id},
{'name': 'Ticket Open 3', 'partner_id': partner.id},
{'name': 'Ticket Open 4', 'partner_id': partner.id},
])
expected_ticket_ids = list(reversed(open_tickets.ids)) + [closed_tickets[-1].id]
result = self.make_jsonrpc_request('/mail_plugin/partner/get', {'partner_id': partner.id})
self.assertIn('tickets', result, msg='The user has create access to helpdesk.ticket')
returned_ticket_ids = [t['ticket_id'] for t in result['tickets']]
self.assertListEqual(expected_ticket_ids, returned_ticket_ids, msg='Ticket in non-folded stage should be returned first')