From defa93809a901cef8bf06a4a9eb8b314e96075a0 Mon Sep 17 00:00:00 2001 From: Leo Hemsted Date: Fri, 4 Nov 2016 16:27:27 +0000 Subject: [PATCH 1/3] show archived label on platform admin page, and sort last --- app/main/views/platform_admin.py | 13 +++++++------ app/templates/views/platform-admin.html | 6 +++++- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/app/main/views/platform_admin.py b/app/main/views/platform_admin.py index 7c883d7e9..74c9ef3be 100644 --- a/app/main/views/platform_admin.py +++ b/app/main/views/platform_admin.py @@ -20,7 +20,7 @@ def platform_admin(): 'views/platform-admin.html', **get_statistics(sorted( services, - key=lambda service: service['created_at'], + key=lambda service: (service['active'], service['created_at']), reverse=True )) ) @@ -29,12 +29,12 @@ def platform_admin(): def get_statistics(services): return { 'global_stats': create_global_stats(services), - 'live_services': format_stats_by_service([ + 'live_services': format_stats_by_service( service for service in services if not service['restricted'] - ]), - 'trial_mode_services': format_stats_by_service([ + ), + 'trial_mode_services': format_stats_by_service( service for service in services if service['restricted'] - ]), + ), } @@ -72,5 +72,6 @@ def format_stats_by_service(services): 'failed': sum(stat['failed'] for stat in stats), 'restricted': service['restricted'], 'research_mode': service['research_mode'], - 'created_at': service['created_at'] + 'created_at': service['created_at'], + 'active': service['active'] } diff --git a/app/templates/views/platform-admin.html b/app/templates/views/platform-admin.html index 38902bc7d..bc5ecbbe6 100644 --- a/app/templates/views/platform-admin.html +++ b/app/templates/views/platform-admin.html @@ -23,7 +23,11 @@ {{ item['name'] }} {% endcall %} - {% if item['research_mode'] %} + {% if not item['active'] %} + {% call field(status='default') %} + archived + {% endcall %} + {% elif item['research_mode'] %} {% call field() %} research mode {% endcall %} From fb85877c75dab1ef9c042aadfcad4d37fdff8154 Mon Sep 17 00:00:00 2001 From: Leo Hemsted Date: Tue, 8 Nov 2016 13:17:08 +0000 Subject: [PATCH 2/3] add tests for platform admin list ordering --- tests/__init__.py | 7 ++- tests/app/main/views/test_platform_admin.py | 63 +++++++++++++++++++++ 2 files changed, 67 insertions(+), 3 deletions(-) diff --git a/tests/__init__.py b/tests/__init__.py index c1ffb0d4f..9bbaec0ae 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -44,7 +44,7 @@ def service_json( name='Test Service', users=None, message_limit=1000, - active=False, + active=True, restricted=True, email_from=None, reply_to_email_address=None, @@ -52,7 +52,8 @@ def service_json( research_mode=False, can_send_letters=False, organisation=None, - branding='govuk' + branding='govuk', + created_at=None ): if users is None: users = [] @@ -70,7 +71,7 @@ def service_json( 'can_send_letters': can_send_letters, 'organisation': organisation, 'branding': branding, - 'created_at': str(datetime.utcnow()) + 'created_at': created_at or str(datetime.utcnow()) } diff --git a/tests/app/main/views/test_platform_admin.py b/tests/app/main/views/test_platform_admin.py index ca95d704a..d8757fcfa 100644 --- a/tests/app/main/views/test_platform_admin.py +++ b/tests/app/main/views/test_platform_admin.py @@ -158,3 +158,66 @@ def test_format_stats_by_service_sums_values_for_sending(fake_uuid): assert ret[0]['sending'] == 34 assert ret[0]['delivered'] == 10 assert ret[0]['failed'] == 16 + + +@pytest.mark.parametrize('restricted, table_index', [ + (False, 0), + (True, 1) +], ids=['live', 'trial']) +def test_should_show_archived_services_last( + client, + platform_admin_user, + mocker, + mock_get_detailed_services, + restricted, + table_index +): + services = [ + service_json(name='C', restricted=restricted, active=False, created_at='2002-02-02 12:00:00'), + service_json(name='B', restricted=restricted, active=True, created_at='2001-01-01 12:00:00'), + service_json(name='A', restricted=restricted, active=True, created_at='2003-03-03 12:00:00'), + ] + services[0]['statistics'] = create_stats() + services[1]['statistics'] = create_stats() + services[2]['statistics'] = create_stats() + + mock_get_detailed_services.return_value = {'data': services} + mock_get_user(mocker, user=platform_admin_user) + client.login(platform_admin_user) + response = client.get(url_for('main.platform_admin')) + + assert response.status_code == 200 + mock_get_detailed_services.assert_called_once_with({'detailed': True}) + page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser') + rows = page.find_all('tbody')[table_index].find_all('tr') + assert len(rows) + assert rows[0] + assert rows[1] + assert rows[0].td.text.strip() == 'A' + assert rows[1].td.text.strip() == 'B' + assert rows[2].td.text.strip() == 'C' + + +@pytest.mark.parametrize('research_mode', (True, False)) +def test_shows_archived_label_instead_of_live_or_research_mode_label( + client, + platform_admin_user, + mocker, + mock_get_detailed_services, + research_mode +): + services = [ + service_json(restricted=False, research_mode=research_mode, active=False) + ] + services[0]['statistics'] = create_stats() + + mock_get_detailed_services.return_value = {'data': services} + mock_get_user(mocker, user=platform_admin_user) + client.login(platform_admin_user) + response = client.get(url_for('main.platform_admin')) + + assert response.status_code == 200 + page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser') + flags = page.find_all('tbody')[0].tr.find_all('td')[1] + # get second column, which contains flags as text. + assert flags.text.strip() == 'archived' From 28adea52abc5862563f60c30016904afde769881 Mon Sep 17 00:00:00 2001 From: Leo Hemsted Date: Mon, 14 Nov 2016 17:25:07 +0000 Subject: [PATCH 3/3] fix tests for new platform admin layout --- tests/app/main/views/test_platform_admin.py | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/tests/app/main/views/test_platform_admin.py b/tests/app/main/views/test_platform_admin.py index 3dd7fe36f..0d7d5fa78 100644 --- a/tests/app/main/views/test_platform_admin.py +++ b/tests/app/main/views/test_platform_admin.py @@ -245,13 +245,13 @@ def test_should_show_archived_services_last( assert response.status_code == 200 mock_get_detailed_services.assert_called_once_with({'detailed': True}) page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser') - rows = page.find_all('tbody')[table_index].find_all('tr') - assert len(rows) - assert rows[0] - assert rows[1] - assert rows[0].td.text.strip() == 'A' - assert rows[1].td.text.strip() == 'B' - assert rows[2].td.text.strip() == 'C' + + table_body = page.find_all('table')[table_index].find_all('tbody')[0] + services = [service.tr for service in table_body.find_all('tbody')] + assert len(services) == 3 + assert services[0].td.text.strip() == 'A' + assert services[1].td.text.strip() == 'B' + assert services[2].td.text.strip() == 'C' @pytest.mark.parametrize('research_mode', (True, False)) @@ -274,6 +274,8 @@ def test_shows_archived_label_instead_of_live_or_research_mode_label( assert response.status_code == 200 page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser') - flags = page.find_all('tbody')[0].tr.find_all('td')[1] + + table_body = page.find_all('table')[0].find_all('tbody')[0] + service_mode = table_body.find_all('tbody')[0].find_all('tr')[1].td.text.strip() # get second column, which contains flags as text. - assert flags.text.strip() == 'archived' + assert service_mode == 'archived'