From 208a586948020bda52c4dad8ab7ba85615416dec Mon Sep 17 00:00:00 2001 From: Adam Shimali Date: Mon, 7 Mar 2016 13:59:54 +0000 Subject: [PATCH] Filter out accepted invites in template not client. --- app/main/views/manage_users.py | 6 +++- app/notify_client/invite_api_client.py | 5 ++- .../main/notify_client/test_invite_client.py | 18 ----------- tests/app/main/views/test_manage_users.py | 31 +++++++++++++++++++ 4 files changed, 38 insertions(+), 22 deletions(-) diff --git a/app/main/views/manage_users.py b/app/main/views/manage_users.py index b8dbfc4c2..a1f44ad71 100644 --- a/app/main/views/manage_users.py +++ b/app/main/views/manage_users.py @@ -28,11 +28,15 @@ from app.utils import user_has_permissions def manage_users(service_id): users = user_api_client.get_users_for_service(service_id=service_id) invited_users = invite_api_client.get_invites_for_service(service_id=service_id) + filtered_invites = [] + for invite in invited_users: + if invite.status != 'accepted': + filtered_invites.append(invite) return render_template('views/manage-users.html', service_id=service_id, users=users, current_user=current_user, - invited_users=invited_users) + invited_users=filtered_invites) @main.route("/services//users/invite", methods=['GET', 'POST']) diff --git a/app/notify_client/invite_api_client.py b/app/notify_client/invite_api_client.py index 0afd46d9b..03ce6e85c 100644 --- a/app/notify_client/invite_api_client.py +++ b/app/notify_client/invite_api_client.py @@ -48,7 +48,6 @@ class InviteApiClient(BaseAPIClient): def _get_invited_users(self, invites): invited_users = [] for invite in invites: - if invite['status'] != 'accepted': - invited_user = InvitedUser(**invite) - invited_users.append(invited_user) + invited_user = InvitedUser(**invite) + invited_users.append(invited_user) return invited_users diff --git a/tests/app/main/notify_client/test_invite_client.py b/tests/app/main/notify_client/test_invite_client.py index 8085f7095..94e80863d 100644 --- a/tests/app/main/notify_client/test_invite_client.py +++ b/tests/app/main/notify_client/test_invite_client.py @@ -18,21 +18,3 @@ def test_client_returns_invite(mocker, sample_invite): mock_get.assert_called_once_with(expected_url) assert len(invites) == 1 assert invites[0].status == 'pending' - - -def test_client_filters_out_accepted_invites(mocker, sample_invite): - - sample_invite['status'] = 'accepted' - service_id = sample_invite['service'] - - expected_data = {'data': [sample_invite]} - - expected_url = '/service/{}/invite'.format(service_id) - - client = InviteApiClient() - mock_get = mocker.patch('app.notify_client.invite_api_client.InviteApiClient.get', return_value=expected_data) - - invites = client.get_invites_for_service(service_id) - - mock_get.assert_called_once_with(expected_url) - assert len(invites) == 0 diff --git a/tests/app/main/views/test_manage_users.py b/tests/app/main/views/test_manage_users.py index b40179643..e45392a06 100644 --- a/tests/app/main/views/test_manage_users.py +++ b/tests/app/main/views/test_manage_users.py @@ -213,3 +213,34 @@ def test_manage_users_shows_invited_user(app_, cols = invites_table.find_all('td') assert cols[0].text.strip() == 'invited_user@test.gov.uk' assert cols[4].text.strip() == 'Cancel invitation' + + +def test_manage_users_does_not_show_accepted_invite(app_, + mocker, + api_user_active, + mock_get_service, + mock_login, + mock_has_permissions, + mock_get_users_by_service, + sample_invite): + + import uuid + invited_user_id = uuid.uuid4() + sample_invite['id'] = invited_user_id + sample_invite['status'] = 'accepted' + data = [InvitedUser(**sample_invite)] + + with app_.test_request_context(): + with app_.test_client() as client: + client.login(api_user_active) + + mocker.patch('app.invite_api_client.get_invites_for_service', return_value=data) + + response = client.get(url_for('main.manage_users', service_id=55555)) + + assert response.status_code == 200 + page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser') + assert page.h1.string.strip() == 'Manage team' + tables = page.find_all('table') + assert len(tables) == 1 + assert not page.find(text='invited_user@test.gov.uk')