def check_for_missing_rows_in_completed_jobs(): jobs = find_jobs_with_missing_rows() for job in jobs: recipient_csv, template, sender_id = get_recipient_csv_and_template_and_sender_id(job) missing_rows = find_missing_row_for_job(job.id, job.notification_count) for row_to_process in missing_rows: row = recipient_csv[row_to_process.missing_row] current_app.logger.info( "Processing missing row: {} for job: {}".format(row_to_process.missing_row, job.id)) process_row(row, template, job, job.service, sender_id=sender_id)
def test_find_jobs_with_missing_rows_returns_nothing_for_a_job_completed_more_that_a_day_ago( sample_email_template): job = create_job(template=sample_email_template, notification_count=5, job_status=JOB_STATUS_FINISHED, processing_finished=datetime.utcnow() - timedelta(days=1)) for i in range(0, 4): create_notification(job=job, job_row_number=i) results = find_jobs_with_missing_rows() assert len(results) == 0
def test_find_jobs_with_missing_rows_doesnt_return_jobs_that_are_not_finished( sample_email_template, status): job = create_job(template=sample_email_template, notification_count=5, job_status=status, processing_finished=datetime.utcnow() - timedelta(minutes=11)) for i in range(0, 4): create_notification(job=job, job_row_number=i) results = find_jobs_with_missing_rows() assert len(results) == 0
def test_find_jobs_with_missing_rows(sample_email_template): healthy_job = create_job(template=sample_email_template, notification_count=3, job_status=JOB_STATUS_FINISHED, processing_finished=datetime.utcnow() - timedelta(minutes=20)) for i in range(0, 3): create_notification(job=healthy_job, job_row_number=i) job_with_missing_rows = create_job(template=sample_email_template, notification_count=5, job_status=JOB_STATUS_FINISHED, processing_finished=datetime.utcnow() - timedelta(minutes=20)) for i in range(0, 4): create_notification(job=job_with_missing_rows, job_row_number=i) results = find_jobs_with_missing_rows() assert len(results) == 1 assert results[0] == job_with_missing_rows