def cancel_letter_job(service_id, job_id): job = dao_get_job_by_service_id_and_job_id(service_id, job_id) can_we_cancel, errors = can_letter_job_be_cancelled(job) if can_we_cancel: data = dao_cancel_letter_job(job) return jsonify(data), 200 else: return jsonify(message=errors), 400
def test_can_letter_job_be_cancelled_returns_false_and_error_message_if_notifications_not_in_db_yet( sample_letter_template ): job = create_job(template=sample_letter_template, notification_count=2, job_status='finished') create_notification(template=job.template, job=job, status='created') result, errors = can_letter_job_be_cancelled(job) assert not result assert errors == "We are still processing these letters, please try again in a minute."
def test_can_letter_job_be_cancelled_returns_false_and_error_message_if_not_a_letter_job( sample_template ): job = create_job(template=sample_template, notification_count=1, job_status='finished') create_notification(template=job.template, job=job, status='created') result, errors = can_letter_job_be_cancelled(job) assert not result assert errors == "Only letter jobs can be cancelled through this endpoint. This is not a letter job."
def test_can_letter_job_be_cancelled_returns_true_if_job_can_be_cancelled( sample_letter_template): job = create_job(template=sample_letter_template, notification_count=1, job_status='finished') create_notification(template=job.template, job=job, status='created') result, errors = can_letter_job_be_cancelled(job) assert result assert not errors
def test_can_letter_job_be_cancelled_respects_bst(sample_letter_template): job = create_job(template=sample_letter_template, created_at=datetime(2020, 4, 9, 23, 30), job_status='finished') create_notification(template=job.template, job=job, status='created', created_at=datetime(2020, 4, 9, 23, 32)) with freeze_time('2020-04-10 10:00'): result, errors = can_letter_job_be_cancelled(job) assert not errors assert result
def test_can_letter_job_be_cancelled_returns_false_and_error_message_if_notification_status_sending( sample_letter_template ): job = create_job(template=sample_letter_template, notification_count=2, job_status='finished') create_notification(template=job.template, job=job, status='sending') create_notification(template=job.template, job=job, status='created') result, errors = can_letter_job_be_cancelled(job) assert not result assert errors == "It’s too late to cancel sending, these letters have already been sent."
def test_can_letter_job_be_cancelled_returns_false_and_error_message_if_letters_already_sent_to_dvla( sample_letter_template ): with freeze_time('2019-06-13 13:00'): job = create_job(template=sample_letter_template, notification_count=1, job_status='finished') letter = create_notification(template=job.template, job=job, status='created') with freeze_time('2019-06-13 17:32'): result, errors = can_letter_job_be_cancelled(job) assert not result assert errors == "It’s too late to cancel sending, these letters have already been sent." assert letter.status == 'created' assert job.job_status == 'finished'