From d5656a4dc22fe89ef2034ea4d2af2e617b31ea5d Mon Sep 17 00:00:00 2001 From: Chris Hill-Scott Date: Fri, 5 Feb 2016 15:08:36 +0000 Subject: [PATCH] Add mocked `get_services` to `test_client.login` MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Because the redirect after logging in checks the number of services a user has, this now needs to be mocked. Right now this means adding `mock_get_login` to any tests that need a login. This must be one of the first mocks, so that it can be overridden by any use of `mock_get_services`, for tests that specifically want to rely on a quantity of mocked services, or their contents. This is a bit fragile, but there’s already a TODO in the code to make it better so ¯\_(ツ)_/¯ --- tests/app/main/views/test_add_service.py | 12 ++++++------ tests/app/main/views/test_choose_services.py | 4 ++-- tests/app/main/views/test_sms.py | 6 ++++-- tests/conftest.py | 18 +++++++++++++++--- 4 files changed, 27 insertions(+), 13 deletions(-) diff --git a/tests/app/main/views/test_add_service.py b/tests/app/main/views/test_add_service.py index 6904bfb45..b326bebaa 100644 --- a/tests/app/main/views/test_add_service.py +++ b/tests/app/main/views/test_add_service.py @@ -4,11 +4,11 @@ from app.main.dao import services_dao def test_get_should_render_add_service_template(app_, api_user_active, + mock_login, mock_get_service, mock_get_services, mock_get_user, - mock_get_user_by_email, - mock_login): + mock_get_user_by_email): with app_.test_request_context(): with app_.test_client() as client: client.login(api_user_active) @@ -18,12 +18,12 @@ def test_get_should_render_add_service_template(app_, def test_should_add_service_and_redirect_to_next_page(app_, + mock_login, mock_create_service, mock_get_services, api_user_active, mock_get_user, - mock_get_user_by_email, - mock_login): + mock_get_user_by_email): with app_.test_request_context(): with app_.test_client() as client: client.login(api_user_active) @@ -52,11 +52,11 @@ def test_should_return_form_errors_when_service_name_is_empty(app_, def test_should_return_form_errors_with_duplicate_service_name(app_, + mock_login, mock_get_services, mock_get_user, api_user_active, - mock_get_user_by_email, - mock_login): + mock_get_user_by_email): with app_.test_request_context(): with app_.test_client() as client: client.login(api_user_active) diff --git a/tests/app/main/views/test_choose_services.py b/tests/app/main/views/test_choose_services.py index 7c2453198..d373da631 100644 --- a/tests/app/main/views/test_choose_services.py +++ b/tests/app/main/views/test_choose_services.py @@ -4,10 +4,10 @@ import pytest def test_should_show_choose_services_page(app_, + mock_login, mock_get_user, api_user_active, - mock_get_services, - mock_login): + mock_get_services): with app_.test_request_context(): with app_.test_client() as client: client.login(api_user_active) diff --git a/tests/app/main/views/test_sms.py b/tests/app/main/views/test_sms.py index cc0ac6422..9f4c4c158 100644 --- a/tests/app/main/views/test_sms.py +++ b/tests/app/main/views/test_sms.py @@ -6,6 +6,7 @@ import moto def test_choose_sms_template(app_, api_user_active, + mock_login, mock_get_user, mock_get_service_templates, mock_check_verify_code, @@ -25,6 +26,7 @@ def test_choose_sms_template(app_, def test_upload_empty_csvfile_returns_to_upload_page(app_, api_user_active, + mock_login, mock_get_user, mock_get_service_templates, mock_check_verify_code, @@ -45,9 +47,9 @@ def test_upload_empty_csvfile_returns_to_upload_page(app_, def test_upload_csvfile_with_invalid_phone_shows_check_page_with_errors(app_, mocker, api_user_active, + mock_login, mock_get_user, mock_get_user_by_email, - mock_login, mock_get_service_template): contents = 'phone\n+44 123\n+44 456' @@ -72,9 +74,9 @@ def test_upload_csvfile_with_invalid_phone_shows_check_page_with_errors(app_, def test_upload_csvfile_with_valid_phone_shows_all_numbers(app_, mocker, api_user_active, + mock_login, mock_get_user, mock_get_user_by_email, - mock_login, mock_get_service_template): contents = 'phone\n+44 7700 900981\n+44 7700 900982\n+44 7700 900983\n+44 7700 900984\n+44 7700 900985\n+44 7700 900986' # noqa diff --git a/tests/conftest.py b/tests/conftest.py index 9c3182036..3ede76035 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -398,11 +398,23 @@ def mock_get_no_api_keys(mocker): @pytest.fixture(scope='function') def mock_login(mocker, mock_get_user, mock_update_user): + def _verify_code(user_id, code, code_type): return True, '' - return mocker.patch( - 'app.user_api_client.check_verify_code', - side_effect=_verify_code) + + def _no_services(user_id=None): + return {'data': []} + + return ( + mocker.patch( + 'app.user_api_client.check_verify_code', + side_effect=_verify_code + ), + mocker.patch( + 'app.notifications_api_client.get_services', + side_effect=_no_services + ) + ) @pytest.fixture(scope='function')