def cancel_notification_for_service(service_id, notification_id): notification = notifications_dao.get_notification_by_id( notification_id, service_id) if not notification: raise InvalidRequest('Notification not found', status_code=404) elif notification.notification_type != LETTER_TYPE: raise InvalidRequest( 'Notification cannot be cancelled - only letters can be cancelled', status_code=400) elif not letter_can_be_cancelled(notification.status, notification.created_at): print_day = letter_print_day(notification.created_at) raise InvalidRequest( "It’s too late to cancel this letter. Printing started {} at 5.30pm" .format(print_day), status_code=400) updated_notification = notifications_dao.update_notification_status_by_id( notification_id, NOTIFICATION_CANCELLED, ) return jsonify( notification_with_template_schema.dump(updated_notification).data), 200
def test_letter_print_day_returns_today_if_letter_was_printed_today(): created_at = datetime(2017, 7, 7, 12, 0) assert letter_print_day(created_at) == "today"
def test_letter_print_day_returns_formatted_date_if_letter_printed_before_1730_yesterday( created_at, formatted_date): assert letter_print_day(created_at) == formatted_date
def test_letter_print_day_returns_today_if_letter_was_printed_after_1730_yesterday( ): created_at = datetime(2017, 7, 6, 17, 30) assert letter_print_day(created_at) == "today"