Add dao to get active users for service

This commit is contained in:
Imdad Ahad
2017-05-10 15:58:44 +01:00
parent 4d0b90bbe2
commit 048861b968
3 changed files with 23 additions and 3 deletions

View File

@@ -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()

View File

@@ -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

View File

@@ -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: