mirror of
https://github.com/GSA/notifications-api.git
synced 2026-08-14 23:07:49 -04:00
- note large change to DAO to remove provider from create notification. Added on send now not creation.
152 lines
5.6 KiB
Python
152 lines
5.6 KiB
Python
from datetime import (date, timedelta)
|
|
from app.models import ProviderStatistics
|
|
from app.dao.notifications_dao import update_provider_stats
|
|
from app.dao.provider_statistics_dao import (
|
|
get_provider_statistics, get_fragment_count)
|
|
from tests.app.conftest import sample_notification as create_sample_notification
|
|
|
|
|
|
def test_should_update_provider_statistics_sms(notify_db,
|
|
notify_db_session,
|
|
sample_template,
|
|
mmg_provider):
|
|
n1 = create_sample_notification(
|
|
notify_db,
|
|
notify_db_session,
|
|
template=sample_template)
|
|
update_provider_stats(n1.id, 'sms', mmg_provider.identifier)
|
|
provider_stats = get_provider_statistics(
|
|
sample_template.service,
|
|
providers=[mmg_provider.identifier]).one()
|
|
assert provider_stats.unit_count == 1
|
|
|
|
|
|
def test_should_update_provider_statistics_email(notify_db,
|
|
notify_db_session,
|
|
sample_email_template,
|
|
ses_provider):
|
|
n1 = create_sample_notification(
|
|
notify_db,
|
|
notify_db_session,
|
|
template=sample_email_template)
|
|
update_provider_stats(n1.id, 'email', ses_provider.identifier)
|
|
provider_stats = get_provider_statistics(
|
|
sample_email_template.service,
|
|
providers=[ses_provider.identifier]).one()
|
|
assert provider_stats.unit_count == 1
|
|
|
|
|
|
def test_should_update_provider_statistics_sms_multi(notify_db,
|
|
notify_db_session,
|
|
sample_template,
|
|
mmg_provider):
|
|
n1 = create_sample_notification(
|
|
notify_db,
|
|
notify_db_session,
|
|
template=sample_template,
|
|
content_char_count=160)
|
|
update_provider_stats(n1.id, 'sms', mmg_provider.identifier)
|
|
n2 = create_sample_notification(
|
|
notify_db,
|
|
notify_db_session,
|
|
template=sample_template,
|
|
content_char_count=161)
|
|
update_provider_stats(n2.id, 'sms', mmg_provider.identifier)
|
|
n3 = create_sample_notification(
|
|
notify_db,
|
|
notify_db_session,
|
|
template=sample_template,
|
|
content_char_count=307)
|
|
update_provider_stats(n3.id, 'sms', mmg_provider.identifier)
|
|
provider_stats = get_provider_statistics(
|
|
sample_template.service,
|
|
providers=[mmg_provider.identifier]).one()
|
|
assert provider_stats.unit_count == 6
|
|
|
|
|
|
def test_should_update_provider_statistics_email_multi(notify_db,
|
|
notify_db_session,
|
|
sample_email_template,
|
|
ses_provider):
|
|
n1 = create_sample_notification(
|
|
notify_db,
|
|
notify_db_session,
|
|
template=sample_email_template)
|
|
update_provider_stats(n1.id, 'email', ses_provider.identifier)
|
|
n2 = create_sample_notification(
|
|
notify_db,
|
|
notify_db_session,
|
|
template=sample_email_template)
|
|
update_provider_stats(n2.id, 'email', ses_provider.identifier)
|
|
n3 = create_sample_notification(
|
|
notify_db,
|
|
notify_db_session,
|
|
template=sample_email_template)
|
|
update_provider_stats(n3.id, 'email', ses_provider.identifier)
|
|
provider_stats = get_provider_statistics(
|
|
sample_email_template.service,
|
|
providers=[ses_provider.identifier]).one()
|
|
assert provider_stats.unit_count == 3
|
|
|
|
|
|
def test_should_aggregate_fragment_count(notify_db,
|
|
notify_db_session,
|
|
sample_service,
|
|
mmg_provider,
|
|
firetext_provider,
|
|
ses_provider):
|
|
day = date.today()
|
|
stats_mmg = ProviderStatistics(
|
|
service=sample_service,
|
|
day=day,
|
|
provider_id=mmg_provider.id,
|
|
unit_count=2
|
|
)
|
|
|
|
stats_firetext = ProviderStatistics(
|
|
service=sample_service,
|
|
day=day,
|
|
provider_id=firetext_provider.id,
|
|
unit_count=3
|
|
)
|
|
|
|
stats_ses = ProviderStatistics(
|
|
service=sample_service,
|
|
day=day,
|
|
provider_id=ses_provider.id,
|
|
unit_count=1
|
|
)
|
|
notify_db.session.add(stats_mmg)
|
|
notify_db.session.add(stats_firetext)
|
|
notify_db.session.add(stats_ses)
|
|
notify_db.session.commit()
|
|
results = get_fragment_count(sample_service, day, day)
|
|
assert results['sms_count'] == 5
|
|
assert results['email_count'] == 1
|
|
|
|
|
|
def test_should_aggregate_fragment_count_over_days(notify_db,
|
|
notify_db_session,
|
|
sample_service,
|
|
mmg_provider):
|
|
today = date.today()
|
|
yesterday = today - timedelta(days=1)
|
|
stats_today = ProviderStatistics(
|
|
service=sample_service,
|
|
day=today,
|
|
provider_id=mmg_provider.id,
|
|
unit_count=2
|
|
)
|
|
stats_yesterday = ProviderStatistics(
|
|
service=sample_service,
|
|
day=yesterday,
|
|
provider_id=mmg_provider.id,
|
|
unit_count=3
|
|
)
|
|
notify_db.session.add(stats_today)
|
|
notify_db.session.add(stats_yesterday)
|
|
notify_db.session.commit()
|
|
results = get_fragment_count(sample_service, yesterday, today)
|
|
assert results['sms_count'] == 5
|
|
assert results['email_count'] == 0
|