diff --git a/app/main/views/feedback.py b/app/main/views/feedback.py index 79a659e81..498433afd 100644 --- a/app/main/views/feedback.py +++ b/app/main/views/feedback.py @@ -4,6 +4,9 @@ import pytz from flask import redirect, render_template, request, session, url_for from flask_login import current_user from govuk_bank_holidays.bank_holidays import BankHolidays +from notifications_utils.clients.zendesk.zendesk_client import ( + NotifySupportTicket, +) from app import convert_to_boolean, current_service from app.extensions import zendesk_client @@ -124,14 +127,19 @@ def feedback(ticket_type): service_string, ) - zendesk_client.create_ticket( + ticket = NotifySupportTicket( subject='Notify feedback', message=feedback_msg, ticket_type=ticket_type, p1=out_of_hours_emergency, + user_name=user_name, user_email=user_email, - user_name=user_name + org_id=current_service.organisation_id if current_service else None, + org_type=current_service.organisation_type if current_service else None, + service_id=current_service.id if current_service else None, ) + zendesk_client.send_ticket_to_zendesk(ticket) + return redirect(url_for( '.thanks', out_of_hours_emergency=out_of_hours_emergency, diff --git a/tests/app/main/views/test_feedback.py b/tests/app/main/views/test_feedback.py index 220214d6d..a2fdbc4f7 100644 --- a/tests/app/main/views/test_feedback.py +++ b/tests/app/main/views/test_feedback.py @@ -12,7 +12,7 @@ from app.models.feedback import ( PROBLEM_TICKET_TYPE, QUESTION_TICKET_TYPE, ) -from tests.conftest import normalize_spaces +from tests.conftest import SERVICE_ONE_ID, normalize_spaces def no_redirect(): @@ -138,9 +138,16 @@ def test_get_feedback_page(client, ticket_type, expected_status_code): @freeze_time('2016-12-12 12:00:00.000000') @pytest.mark.parametrize('ticket_type', [PROBLEM_TICKET_TYPE, QUESTION_TICKET_TYPE]) def test_passed_non_logged_in_user_details_through_flow(client, mocker, ticket_type): - mock_post = mocker.patch('app.main.views.feedback.zendesk_client.create_ticket') + mock_ticket = mocker.patch( + 'app.main.views.feedback.NotifySupportTicket', + return_value='feedback_ticket', + ) + mock_send_ticket_to_zendesk = mocker.patch( + 'app.main.views.feedback.zendesk_client.send_ticket_to_zendesk', + autospec=True, + ) - data = {'feedback': 'blah', 'name': 'Steve Irwin', 'email_address': 'rip@gmail.com'} + data = {'feedback': 'blah', 'name': 'Anne Example', 'email_address': 'anne@example.com'} resp = client.post( url_for('main.feedback', ticket_type=ticket_type), @@ -154,14 +161,18 @@ def test_passed_non_logged_in_user_details_through_flow(client, mocker, ticket_t email_address_provided=True, _external=True, ) - mock_post.assert_called_with( + mock_ticket.assert_called_once_with( subject='Notify feedback', message='blah\n', - user_email='rip@gmail.com', - user_name='Steve Irwin', ticket_type=ticket_type, - p1=ANY + p1=False, + user_name='Anne Example', + user_email='anne@example.com', + org_id=None, + org_type=None, + service_id=None ) + mock_send_ticket_to_zendesk.assert_called_once_with('feedback_ticket') @freeze_time("2016-12-12 12:00:00.000000") @@ -177,7 +188,14 @@ def test_passes_user_details_through_flow( ticket_type, data ): - mock_post = mocker.patch('app.main.views.feedback.zendesk_client.create_ticket') + mock_ticket = mocker.patch( + 'app.main.views.feedback.NotifySupportTicket', + return_value='feedback_ticket', + ) + mock_send_ticket_to_zendesk = mocker.patch( + 'app.main.views.feedback.zendesk_client.send_ticket_to_zendesk', + autospec=True, + ) client_request.post( 'main.feedback', @@ -191,25 +209,29 @@ def test_passes_user_details_through_flow( _external=True, ), ) - - mock_post.assert_called_with( + mock_ticket.assert_called_once_with( subject='Notify feedback', message=ANY, - user_email='test@user.gov.uk', - user_name='Test User', ticket_type=ticket_type, - p1=ANY + p1=False, + user_name='Test User', + user_email='test@user.gov.uk', + org_id=None, + org_type='central', + service_id=SERVICE_ONE_ID ) - assert mock_post.call_args[1]['message'] == '\n'.join([ + + assert mock_ticket.call_args[1]['message'] == '\n'.join([ 'blah', 'Service: "service one"', url_for( 'main.service_dashboard', - service_id='596364a0-858e-42c8-9062-a8fe822260eb', + service_id=SERVICE_ONE_ID, _external=True ), '' ]) + mock_send_ticket_to_zendesk.assert_called_once_with('feedback_ticket') @freeze_time('2016-12-12 12:00:00.000000') @@ -289,7 +311,13 @@ def test_urgency( is_out_of_hours_emergency, ): mocker.patch('app.main.views.feedback.in_business_hours', return_value=is_in_business_hours) - mock_post = mocker.patch('app.main.views.feedback.zendesk_client.create_ticket') + + mock_ticket = mocker.patch('app.main.views.feedback.NotifySupportTicket') + mocker.patch( + 'app.main.views.feedback.zendesk_client.send_ticket_to_zendesk', + autospec=True, + ) + client_request.post( 'main.feedback', ticket_type=ticket_type, @@ -303,7 +331,7 @@ def test_urgency( _external=True, ), ) - assert mock_post.call_args[1]['p1'] == is_out_of_hours_emergency + assert mock_ticket.call_args[1]['p1'] == is_out_of_hours_emergency ids, params = zip(*[