mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-02-05 10:53:28 -05:00
Added choose_service using services_dao.
This commit is contained in:
@@ -1,8 +1,10 @@
|
||||
from flask import url_for
|
||||
from datetime import datetime
|
||||
from client.errors import HTTPError, InvalidResponse
|
||||
from sqlalchemy.orm import load_only
|
||||
from flask.ext.login import current_user
|
||||
from app import (db, notifications_api_client)
|
||||
from app.main.utils import BrowsableItem
|
||||
|
||||
|
||||
def insert_new_service(service_name, user_id):
|
||||
@@ -18,6 +20,10 @@ def get_service_by_id(id_):
|
||||
return notifications_api_client.get_service(id_)
|
||||
|
||||
|
||||
def get_services():
|
||||
return notifications_api_client.get_services()
|
||||
|
||||
|
||||
def unrestrict_service(service_id):
|
||||
resp = notifications_api_client.get_service(service_id)
|
||||
if resp['data']['restricted']:
|
||||
@@ -56,3 +62,22 @@ def find_service_by_service_name(service_name):
|
||||
def find_all_service_names():
|
||||
resp = notifications_api_client.get_services()
|
||||
return [x['name'] for x in resp['data']]
|
||||
|
||||
|
||||
class ServicesBrowsableItem(BrowsableItem):
|
||||
|
||||
@property
|
||||
def title(self):
|
||||
return self._item['name']
|
||||
|
||||
@property
|
||||
def link(self):
|
||||
return url_for('main.service_dashboard', service_id=self._item['id'])
|
||||
|
||||
@property
|
||||
def destructive(self):
|
||||
return False
|
||||
|
||||
@property
|
||||
def hint(self):
|
||||
return "Some service hint here"
|
||||
|
||||
26
app/main/utils.py
Normal file
26
app/main/utils.py
Normal file
@@ -0,0 +1,26 @@
|
||||
|
||||
|
||||
class BrowsableItem(object):
|
||||
"""
|
||||
Maps for the template browse-list.
|
||||
"""
|
||||
|
||||
def __init__(self, item, *args, **kwargs):
|
||||
self._item = item
|
||||
super(BrowsableItem, self).__init__()
|
||||
|
||||
@property
|
||||
def title(self):
|
||||
pass
|
||||
|
||||
@property
|
||||
def link(self):
|
||||
pass
|
||||
|
||||
@property
|
||||
def hint(self):
|
||||
pass
|
||||
|
||||
@property
|
||||
def destructive(self):
|
||||
pass
|
||||
@@ -1,9 +1,18 @@
|
||||
from flask import render_template
|
||||
from flask import (render_template, redirect, url_for)
|
||||
from flask_login import login_required
|
||||
from app.main.dao import services_dao
|
||||
from app.main import main
|
||||
|
||||
|
||||
@main.route("/services")
|
||||
@login_required
|
||||
def choose_service():
|
||||
return render_template('views/choose-service.html')
|
||||
services = services_dao.get_services()
|
||||
# If there is only one service redirect
|
||||
# to the service dashboard.
|
||||
if len(services['data']) == 1:
|
||||
return redirect(url_for(
|
||||
'main.service_dashboard', service_id=services['data'][0]['id']))
|
||||
return render_template(
|
||||
'views/choose-service.html',
|
||||
services=[services_dao.ServicesBrowsableItem(x) for x in services['data']])
|
||||
|
||||
@@ -11,16 +11,7 @@
|
||||
Choose service
|
||||
</h1>
|
||||
|
||||
{{ browse_list([
|
||||
{
|
||||
'title': 'MOT Reminders',
|
||||
'link': url_for('.service_dashboard', service_id=123)
|
||||
},
|
||||
{
|
||||
'title': 'Vehicle Tax',
|
||||
'link': url_for('.service_dashboard', service_id=123)
|
||||
},
|
||||
]) }}
|
||||
{{ browse_list(services) }}
|
||||
{{ browse_list([
|
||||
{
|
||||
'title': 'Add a new service…',
|
||||
|
||||
@@ -1,15 +1,23 @@
|
||||
from tests import create_test_user
|
||||
from flask import url_for
|
||||
from app.models import User
|
||||
|
||||
|
||||
def test_should_show_choose_services_page(app_,
|
||||
db_,
|
||||
db_session,
|
||||
active_user):
|
||||
active_user,
|
||||
mock_get_services):
|
||||
with app_.test_request_context():
|
||||
with app_.test_client() as client:
|
||||
client.login(active_user)
|
||||
user = User.query.first()
|
||||
client.login(user)
|
||||
response = client.get(url_for('main.choose_service'))
|
||||
|
||||
assert response.status_code == 200
|
||||
assert 'Choose service' in response.get_data(as_text=True)
|
||||
resp_data = response.get_data(as_text=True)
|
||||
assert 'Choose service' in resp_data
|
||||
services = mock_get_services.side_effect()
|
||||
assert mock_get_services.called
|
||||
assert services['data'][0]['name'] in resp_data
|
||||
assert services['data'][1]['name'] in resp_data
|
||||
|
||||
Reference in New Issue
Block a user