mirror of
https://github.com/GSA/notifications-api.git
synced 2026-02-03 18:01:08 -05:00
Merge branch 'master' into seperate-queues-for-sending-and-for-db
This commit is contained in:
@@ -241,23 +241,6 @@ def test_should_call_send_sms_response_task_if_research_mode(notify_db, sample_s
|
||||
assert not persisted_notification.personalisation
|
||||
|
||||
|
||||
def test_should_update_provider_stats_on_success(notify_db, sample_service, sample_notification, mocker):
|
||||
provider_stats = provider_statistics_dao.get_provider_statistics(sample_service).all()
|
||||
assert len(provider_stats) == 0
|
||||
|
||||
mocker.patch('app.mmg_client.send_sms')
|
||||
mocker.patch('app.mmg_client.get_name', return_value="mmg")
|
||||
|
||||
send_sms_to_provider(
|
||||
sample_notification.service_id,
|
||||
sample_notification.id
|
||||
)
|
||||
|
||||
updated_provider_stats = provider_statistics_dao.get_provider_statistics(sample_service).all()
|
||||
assert updated_provider_stats[0].provider.identifier == 'mmg'
|
||||
assert updated_provider_stats[0].unit_count == 1
|
||||
|
||||
|
||||
@pytest.mark.parametrize('research_mode,key_type', [
|
||||
(True, KEY_TYPE_NORMAL),
|
||||
(False, KEY_TYPE_TEST)
|
||||
@@ -325,12 +308,6 @@ def test_should_go_into_technical_error_if_exceeds_retries(
|
||||
|
||||
db_notification = Notification.query.filter_by(id=notification.id).one()
|
||||
assert db_notification.status == 'technical-failure'
|
||||
notification_stats = NotificationStatistics.query.filter_by(service_id=notification.service.id).first()
|
||||
assert notification_stats.sms_requested == 1
|
||||
assert notification_stats.sms_failed == 1
|
||||
job = Job.query.get(notification.job.id)
|
||||
assert job.notification_count == 1
|
||||
assert job.notifications_failed == 1
|
||||
|
||||
|
||||
def test_should_send_sms_sender_from_service_if_present(
|
||||
@@ -439,12 +416,6 @@ def test_send_email_to_provider_should_go_into_technical_error_if_exceeds_retrie
|
||||
|
||||
db_notification = Notification.query.filter_by(id=notification.id).one()
|
||||
assert db_notification.status == 'technical-failure'
|
||||
notification_stats = NotificationStatistics.query.filter_by(service_id=notification.service.id).first()
|
||||
assert notification_stats.emails_requested == 1
|
||||
assert notification_stats.emails_failed == 1
|
||||
job = Job.query.get(notification.job.id)
|
||||
assert job.notification_count == 1
|
||||
assert job.notifications_failed == 1
|
||||
|
||||
|
||||
def test_send_email_to_provider_should_not_send_to_provider_when_status_is_not_created(notify_db, notify_db_session,
|
||||
|
||||
@@ -7,8 +7,11 @@ from app.celery.scheduled_tasks import (delete_verify_codes,
|
||||
delete_successful_notifications,
|
||||
delete_failed_notifications,
|
||||
delete_invitations,
|
||||
timeout_notifications)
|
||||
from tests.app.conftest import sample_notification
|
||||
timeout_notifications,
|
||||
run_scheduled_jobs)
|
||||
from app.dao.jobs_dao import dao_get_job_by_id
|
||||
from tests.app.conftest import sample_notification, sample_job
|
||||
from mock import call
|
||||
|
||||
|
||||
def test_should_have_decorated_tasks_functions():
|
||||
@@ -17,10 +20,11 @@ def test_should_have_decorated_tasks_functions():
|
||||
assert delete_failed_notifications.__wrapped__.__name__ == 'delete_failed_notifications'
|
||||
assert timeout_notifications.__wrapped__.__name__ == 'timeout_notifications'
|
||||
assert delete_invitations.__wrapped__.__name__ == 'delete_invitations'
|
||||
assert run_scheduled_jobs.__wrapped__.__name__ == 'run_scheduled_jobs'
|
||||
|
||||
|
||||
def test_should_call_delete_notifications_more_than_week_in_task(notify_api, mocker):
|
||||
mocked = mocker.patch('app.celery.scheduled_tasksgit .delete_notifications_created_more_than_a_week_ago')
|
||||
mocked = mocker.patch('app.celery.scheduled_tasks.delete_notifications_created_more_than_a_week_ago')
|
||||
delete_successful_notifications()
|
||||
assert mocked.assert_called_with('delivered')
|
||||
assert scheduled_tasks.delete_notifications_created_more_than_a_week_ago.call_count == 1
|
||||
@@ -80,3 +84,39 @@ def test_not_update_status_of_notification_before_timeout(notify_api,
|
||||
seconds=current_app.config.get('SENDING_NOTIFICATIONS_TIMEOUT_PERIOD') - 10))
|
||||
timeout_notifications()
|
||||
assert not1.status == 'sending'
|
||||
|
||||
|
||||
def test_should_update_scheduled_jobs_and_put_on_queue(notify_db, notify_db_session, mocker):
|
||||
mocked = mocker.patch('app.celery.tasks.process_job.apply_async')
|
||||
|
||||
one_minute_in_the_past = datetime.utcnow() - timedelta(minutes=1)
|
||||
job = sample_job(notify_db, notify_db_session, scheduled_for=one_minute_in_the_past, job_status='scheduled')
|
||||
|
||||
run_scheduled_jobs()
|
||||
|
||||
updated_job = dao_get_job_by_id(job.id)
|
||||
assert updated_job.job_status == 'pending'
|
||||
mocked.assert_called_with([str(job.id)], queue='process-job')
|
||||
|
||||
|
||||
def test_should_update_all_scheduled_jobs_and_put_on_queue(notify_db, notify_db_session, mocker):
|
||||
mocked = mocker.patch('app.celery.tasks.process_job.apply_async')
|
||||
|
||||
one_minute_in_the_past = datetime.utcnow() - timedelta(minutes=1)
|
||||
ten_minutes_in_the_past = datetime.utcnow() - timedelta(minutes=10)
|
||||
twenty_minutes_in_the_past = datetime.utcnow() - timedelta(minutes=20)
|
||||
job_1 = sample_job(notify_db, notify_db_session, scheduled_for=one_minute_in_the_past, job_status='scheduled')
|
||||
job_2 = sample_job(notify_db, notify_db_session, scheduled_for=ten_minutes_in_the_past, job_status='scheduled')
|
||||
job_3 = sample_job(notify_db, notify_db_session, scheduled_for=twenty_minutes_in_the_past, job_status='scheduled')
|
||||
|
||||
run_scheduled_jobs()
|
||||
|
||||
assert dao_get_job_by_id(job_1.id).job_status == 'pending'
|
||||
assert dao_get_job_by_id(job_2.id).job_status == 'pending'
|
||||
assert dao_get_job_by_id(job_2.id).job_status == 'pending'
|
||||
|
||||
mocked.assert_has_calls([
|
||||
call([str(job_3.id)], queue='process-job'),
|
||||
call([str(job_2.id)], queue='process-job'),
|
||||
call([str(job_1.id)], queue='process-job')
|
||||
])
|
||||
|
||||
Reference in New Issue
Block a user