Able to get services by user id

This commit is contained in:
Rebecca Law
2016-01-22 16:46:59 +00:00
parent 81cd0cc7c3
commit 6ef9becf8f
5 changed files with 35 additions and 28 deletions

View File

@@ -26,8 +26,11 @@ def get_service_by_id(id_):
return notifications_api_client.get_service(id_)
def get_services():
return notifications_api_client.get_services()
def get_services(user_id=None):
if user_id:
return notifications_api_client.get_services({'user_id': str(user_id)})
else:
return notifications_api_client.get_services()
def unrestrict_service(service_id):
@@ -55,8 +58,8 @@ def activate_service(service_id):
# TODO Fix when functionality is added to the api.
def find_service_by_service_name(service_name):
resp = notifications_api_client.get_services()
def find_service_by_service_name(service_name, user_id=None):
resp = notifications_api_client.get_services(user_id)
retval = None
for srv_json in resp['data']:
if srv_json['name'] == service_name:
@@ -69,8 +72,8 @@ def delete_service(id_):
return notifications_api_client.delete_service(id_)
def find_all_service_names():
resp = notifications_api_client.get_services()
def find_all_service_names(user_id=None):
resp = notifications_api_client.get_services(user_id)
return [x['name'] for x in resp['data']]

View File

@@ -1,5 +1,5 @@
from flask import request, render_template, jsonify, redirect, session, url_for, abort
from flask_login import login_required
from flask import render_template, redirect, session, url_for
from flask_login import login_required, current_user
from app.main import main
from app.main.dao import services_dao, users_dao
from app.main.forms import AddServiceForm
@@ -9,7 +9,7 @@ from app.main.forms import AddServiceForm
@login_required
def add_service():
form = AddServiceForm(services_dao.find_all_service_names)
services = services_dao.get_services()
services = services_dao.get_services(current_user.id)
if len(services) > 0:
heading = 'Set up notifications for your service'
else:

View File

@@ -1,5 +1,5 @@
from flask import (render_template, redirect, url_for)
from flask_login import login_required
from flask_login import login_required, current_user
from app.main.dao import services_dao
from app.main import main
@@ -7,7 +7,7 @@ from app.main import main
@main.route("/services")
@login_required
def choose_service():
services = services_dao.get_services()
services = services_dao.get_services(current_user.id)
# If there is only one service redirect
# to the service dashboard.
if len(services['data']) == 1:

View File

@@ -1,5 +1,3 @@
import pytest
import sqlalchemy
from app.main.dao import services_dao
@@ -58,8 +56,8 @@ def test_find_by_service_name_returns_right_service(db_, db_session, mock_get_se
assert service['name'] == service_name
def test_should_return_list_of_service_names(db_, db_session, mock_get_services):
def test_should_return_list_of_service_names(db_, db_session, mock_api_user, mock_get_services):
expected = ['service_one', 'service_two']
actual = services_dao.find_all_service_names()
actual = services_dao.find_all_service_names(mock_api_user.id)
assert mock_get_services.called
assert actual == expected

View File

@@ -1,14 +1,13 @@
import os
from datetime import date
import pytest
from alembic.command import upgrade
from alembic.config import Config
from flask.ext.migrate import Migrate, MigrateCommand
from flask.ext.script import Manager
from sqlalchemy.schema import MetaData
from app import create_app, db
from . import (
create_test_user, service_json, TestClient,
get_test_user, template_json, api_key_json)
@@ -67,14 +66,6 @@ def service_one(request, mock_api_user):
return service_json(1, 'service one', [mock_api_user.id])
# @pytest.fixture(scope='function')
# def active_user(request, db_, db_session):
# usr = get_test_user()
# if usr:
# return usr
# return create_test_user('active')
@pytest.fixture(scope='function')
def mock_send_sms(request, mocker):
return mocker.patch("app.notifications_api_client.send_sms")
@@ -87,13 +78,13 @@ def mock_send_email(request, mocker):
@pytest.fixture(scope='function')
def mock_get_service(mocker, mock_api_user):
def _create(service_id):
def _get(service_id):
service = service_json(
service_id, "Test Service", [mock_api_user.id], limit=1000,
active=False, restricted=True)
return {'data': service, 'token': 1}
return mocker.patch('app.notifications_api_client.get_service', side_effect=_create)
return mocker.patch('app.notifications_api_client.get_service', side_effect=_get)
@pytest.fixture(scope='function')
@@ -129,7 +120,21 @@ def mock_update_service(mocker):
@pytest.fixture(scope='function')
def mock_get_services(mocker, mock_api_user):
def _create():
def _get(user_id):
service_one = service_json(
1, "service_one", [mock_api_user.id], 1000, True, False)
service_two = service_json(
2, "service_two", [mock_api_user.id], 1000, True, False)
return {'data': [service_one, service_two]}
mock_class = mocker.patch(
'app.notifications_api_client.get_services', side_effect=_get)
return mock_class
@pytest.fixture(scope='function')
def mock_get_services(mocker, mock_api_user):
def _create(user_id):
service_one = service_json(
1, "service_one", [mock_api_user.id], 1000, True, False)
service_two = service_json(
@@ -318,6 +323,7 @@ def mock_user_dao_password_reset(mocker, mock_api_user):
def _reset(email):
mock_api_user.state = 'request_password_reset'
return mocker.patch('app.main.dao.users_dao.request_password_reset', side_effect=_reset)