From 048861b9680ced6b2fac235d3882eb769edc35fb Mon Sep 17 00:00:00 2001 From: Imdad Ahad Date: Wed, 10 May 2017 15:58:44 +0100 Subject: [PATCH] Add dao to get active users for service --- app/dao/services_dao.py | 9 +++++++++ tests/app/dao/test_services_dao.py | 12 +++++++++++- tests/app/db.py | 5 +++-- 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/app/dao/services_dao.py b/app/dao/services_dao.py index c5679289c..b0891c490 100644 --- a/app/dao/services_dao.py +++ b/app/dao/services_dao.py @@ -384,3 +384,12 @@ def dao_suspend_service(service_id): def dao_resume_service(service_id): service = Service.query.get(service_id) service.active = True + + +def dao_fetch_active_users_for_service(service_id): + query = User.query.filter( + User.user_to_service.any(id=service_id), + User.state == 'active' + ) + + return query.all() diff --git a/tests/app/dao/test_services_dao.py b/tests/app/dao/test_services_dao.py index d37f8341b..435c4935b 100644 --- a/tests/app/dao/test_services_dao.py +++ b/tests/app/dao/test_services_dao.py @@ -24,7 +24,8 @@ from app.dao.services_dao import ( dao_fetch_todays_stats_for_all_services, fetch_stats_by_date_range_for_all_services, dao_suspend_service, - dao_resume_service + dao_resume_service, + dao_fetch_active_users_for_service ) from app.dao.users_dao import save_model_user from app.models import ( @@ -49,6 +50,7 @@ from app.models import ( KEY_TYPE_TEST ) +from tests.app.db import create_user from tests.app.conftest import ( sample_notification as create_notification, sample_notification_history as create_notification_history, @@ -783,3 +785,11 @@ def test_fetch_monthly_historical_template_stats_for_service_separates_templates assert len(result.get('2016-04').keys()) == 2 assert str(template_one.id) in result.get('2016-04').keys() assert str(template_two.id) in result.get('2016-04').keys() + + +def test_dao_fetch_active_users_for_service_returns_active_only(sample_service): + pending_user = create_user(email='foo@bar.com', state='pending') + dao_add_user_to_service(sample_service, pending_user) + users = dao_fetch_active_users_for_service(sample_service.id) + + assert len(users) == 1 diff --git a/tests/app/db.py b/tests/app/db.py index b5838d693..8bbe2bd3b 100644 --- a/tests/app/db.py +++ b/tests/app/db.py @@ -9,13 +9,14 @@ from app.dao.templates_dao import dao_create_template from app.dao.services_dao import dao_create_service -def create_user(mobile_number="+447700900986", email="notify@digital.cabinet-office.gov.uk"): +def create_user(mobile_number="+447700900986", email="notify@digital.cabinet-office.gov.uk", state='active'): data = { + 'id': uuid.uuid4(), 'name': 'Test User', 'email_address': email, 'password': 'password', 'mobile_number': mobile_number, - 'state': 'active' + 'state': state } user = User.query.filter_by(email_address=email).first() if not user: