Add page to choose services

Because a user can have multiple services, they need a way to navigate between
them. Normally they can use the ▶ Switcher to do this, except when:

- they first sign in
- they are on a page which isn’t associated with a service (eg user profile) in
  which case we can’t use the switcher because it won’t know what the ‘current’
  service is

So this commit adds a new page with a (fake) list of services.
This commit is contained in:
Chris Hill-Scott
2016-01-13 14:43:21 +00:00
parent 7c246ba3ac
commit 58317afdf1
6 changed files with 58 additions and 3 deletions

View File

@@ -5,5 +5,5 @@ main = Blueprint('main', __name__)
from app.main.views import (
index, sign_in, sign_out, register, two_factor, verify, sms, add_service,
code_not_received, jobs, dashboard, templates, service_settings, forgot_password,
new_password, styleguide, user_profile
new_password, styleguide, user_profile, choose_service
)

View File

@@ -0,0 +1,9 @@
from flask import render_template
from flask_login import login_required
from app.main import main
@main.route("/services")
@login_required
def chooseservice():
return render_template('views/choose-service.html')

View File

@@ -19,6 +19,6 @@ def two_factor():
if form.validate_on_submit():
verify_codes_dao.use_code_for_user_and_type(user_id=user.id, code_type='sms')
login_user(user)
return redirect(url_for('.dashboard', service_id=123))
return redirect(url_for('.chooseservice'))
return render_template('views/two-factor.html', form=form)

View File

@@ -0,0 +1,31 @@
{% extends "withnav_template.html" %}
{% from "components/browse-list.html" import browse_list %}
{% block page_title %}
GOV.UK Notify | Dashboard
{% endblock %}
{% block fullwidth_content %}
<h1 class="heading-xlarge">
Choose service
</h1>
{{ browse_list([
{
'title': 'MOT Reminders',
'link': url_for('.dashboard', service_id=123)
},
{
'title': 'Vehicle Tax',
'link': url_for('.dashboard', service_id=123)
},
]) }}
{{ browse_list([
{
'title': 'Add a new service…',
'link': url_for('.add_service')
},
]) }}
{% endblock %}

View File

@@ -0,0 +1,15 @@
from tests.app.main import create_test_user
from flask import url_for
def test_should_show_choose_services_page(notifications_admin,
notifications_admin_db,
notify_db_session):
with notifications_admin.test_request_context():
with notifications_admin.test_client() as client:
user = create_test_user('active')
client.login(user)
response = client.get('/services')
assert response.status_code == 200
assert 'Choose service' in response.get_data(as_text=True)

View File

@@ -28,7 +28,7 @@ def test_should_login_user_and_redirect_to_dashboard(notifications_admin, notifi
data={'sms_code': '12345'})
assert response.status_code == 302
assert response.location == url_for('main.dashboard', service_id=123, _external=True)
assert response.location == 'http://localhost/services'
def test_should_return_200_with_sms_code_error_when_sms_code_is_wrong(notifications_admin,