diff --git a/app/main/views/feedback.py b/app/main/views/feedback.py index 1c9b9106f..48e76c94a 100644 --- a/app/main/views/feedback.py +++ b/app/main/views/feedback.py @@ -134,6 +134,9 @@ def feedback(ticket_type): abort(500, "Feedback submission failed") return redirect(url_for('.thanks', urgent=urgent, anonymous=anonymous)) + if not form.feedback.data: + form.feedback.data = request.args.get('body', '') + return render_template( 'views/support/{}.html'.format(ticket_type), form=form, diff --git a/tests/app/main/views/test_feedback.py b/tests/app/main/views/test_feedback.py index 56e37fa33..5dc5da3c5 100644 --- a/tests/app/main/views/test_feedback.py +++ b/tests/app/main/views/test_feedback.py @@ -85,6 +85,31 @@ def test_get_feedback_page(client, ticket_type, expected_status_code): assert response.status_code == expected_status_code +@freeze_time('2016-12-12 12:00:00.000000') +def test_get_feedback_page_with_prefilled_body( + client_request, + mocker, +): + mock_post = mocker.patch('app.main.views.feedback.deskpro_client.create_ticket') + page = client_request.get( + 'main.feedback', + ticket_type=QUESTION_TICKET_TYPE, + body='Please send cat pictures ', + ) + assert page.select_one('textarea').text == ( + 'Please send cat pictures ' + ) + client_request.post( + 'main.feedback', + ticket_type=QUESTION_TICKET_TYPE, + body='Please send cat pictures ', + _data={'feedback': 'blah', 'name': 'Example', 'email_address': 'test@example.com'} + ) + message = mock_post.call_args[1]['message'] + assert message.endswith('blah') + assert 'cat pictures' not in message + + @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):