From e034269a0239b495387d6a1d7d8faab2fa269140 Mon Sep 17 00:00:00 2001 From: richard-dds Date: Fri, 2 Aug 2019 16:07:32 -0400 Subject: [PATCH] Don't flash when cancelling TO form with invalid data --- atst/forms/forms.py | 4 ++-- atst/routes/task_orders/new.py | 2 +- tests/routes/task_orders/test_new.py | 21 +++++++++++++++++++-- 3 files changed, 22 insertions(+), 5 deletions(-) diff --git a/atst/forms/forms.py b/atst/forms/forms.py index bb0d086f..4287c81c 100644 --- a/atst/forms/forms.py +++ b/atst/forms/forms.py @@ -30,9 +30,9 @@ class BaseForm(FlaskForm): _data[field] = None return _data - def validate(self, *args, **kwargs): + def validate(self, *args, flash_invalid=True, **kwargs): valid = super().validate(*args, **kwargs) - if not valid: + if not valid and flash_invalid: flash("form_errors") return valid diff --git a/atst/routes/task_orders/new.py b/atst/routes/task_orders/new.py index 6f00e1ad..9e88f8d4 100644 --- a/atst/routes/task_orders/new.py +++ b/atst/routes/task_orders/new.py @@ -139,7 +139,7 @@ def cancel_edit(task_order_id=None, portfolio_id=None): else: form = TaskOrderForm(form_data) - if form.validate(): + if form.validate(flash_invalid=False): task_order = None if task_order_id: task_order = TaskOrders.update(task_order_id, **form.data) diff --git a/tests/routes/task_orders/test_new.py b/tests/routes/task_orders/test_new.py index 83a42006..0ab8a2bc 100644 --- a/tests/routes/task_orders/test_new.py +++ b/tests/routes/task_orders/test_new.py @@ -1,5 +1,5 @@ import pytest -from flask import url_for +from flask import url_for, get_flashed_messages from datetime import timedelta, date from atst.domain.task_orders import TaskOrders @@ -342,9 +342,10 @@ def test_cancel_can_create_new_to(client, user_session, portfolio): def test_cancel_edit_does_not_save_invalid_form_input(client, user_session, session): task_order = TaskOrderFactory.create() user_session(task_order.portfolio.owner) + bad_data = {"clins-0-jedi_clin_type": "foo"} response = client.post( url_for("task_orders.cancel_edit", task_order_id=task_order.id, save=True), - data={"clins": "not really clins"}, + data=bad_data, ) assert response.status_code == 302 @@ -353,6 +354,22 @@ def test_cancel_edit_does_not_save_invalid_form_input(client, user_session, sess assert updated_task_order.clins == task_order.clins +def test_cancel_edit_on_invalid_input_does_not_flash( + app, client, user_session, session +): + task_order = TaskOrderFactory.create() + user_session(task_order.portfolio.owner) + + bad_data = {"clins-0-jedi_clin_type": "foo"} + + response = client.post( + url_for("task_orders.cancel_edit", task_order_id=task_order.id, save=True), + data=bad_data, + ) + + assert len(get_flashed_messages()) == 0 + + def test_cancel_edit_without_saving(client, user_session, session): task_order = TaskOrderFactory.create(number=None) user_session(task_order.portfolio.owner)