def test_get_letter_jobs_returns_list_of_all_letter_jobs(
        logged_in_platform_admin_client, mocker):
    mock_get_letters = mocker.patch('app.letter_jobs_client.get_letter_jobs',
                                    return_value=valid_letter_jobs)

    response = logged_in_platform_admin_client.get(url_for('main.letter_jobs'))

    assert mock_get_letters.called
    assert response.status_code == 200

    page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
    assert page.h1.string == 'Letter jobs'

    rows = page.select('table tbody tr')

    assert len(rows) == len(valid_letter_jobs)

    for row_pos in range(len(rows)):
        cols = rows[row_pos].find_all('td')
        assert valid_letter_jobs[row_pos]['service_name']['name'] == cols[
            LetterJobsHeader.SERVICE_NAME].text
        assert valid_letter_jobs[row_pos]['id'] == cols[
            LetterJobsHeader.JOB_ID].text
        assert valid_letter_jobs[row_pos]['notification_count'] == int(
            cols[LetterJobsHeader.NOTIFICATION_COUNT].text)
        assert valid_letter_jobs[row_pos]['job_status'] == cols[
            LetterJobsHeader.JOB_STATUS].text
        assert format_datetime_short(
            valid_letter_jobs[row_pos]['created_at']) == cols[
                LetterJobsHeader.CREATED_AT].text
        if not (valid_letter_jobs[row_pos]['job_status'] == 'ready to send'
                or valid_letter_jobs[row_pos]['job_status'] == 'sent to dvla'):
            assert 'disabled' in str(cols[LetterJobsHeader.CHECKBOX])
Пример #2
0
def view_job_csv(service_id, job_id):
    job = job_api_client.get_job(service_id, job_id)['data']
    template = service_api_client.get_service_template(
        service_id=service_id,
        template_id=job['template'],
        version=job['template_version'])['data']
    filter_args = parse_filter_args(request.args)
    filter_args['status'] = set_status_filters(filter_args)

    return Response(stream_with_context(
        generate_notifications_csv(
            service_id=service_id,
            job_id=job_id,
            status=filter_args.get('status'),
            page=request.args.get('page', 1),
            page_size=5000,
            format_for_csv=True,
            template_type=template['template_type'],
        )),
                    mimetype='text/csv',
                    headers={
                        'Content-Disposition':
                        'inline; filename="{} - {}.csv"'.format(
                            template['name'],
                            format_datetime_short(job['created_at']))
                    })
Пример #3
0
def view_job_csv(service_id, job_id):
    job = job_api_client.get_job(service_id, job_id)['data']
    template = service_api_client.get_service_template(
        service_id=service_id,
        template_id=job['template'],
        version=job['template_version']
    )['data']
    filter_args = _parse_filter_args(request.args)
    filter_args['status'] = _set_status_filters(filter_args)

    return (
        generate_notifications_csv(
            notification_api_client.get_notifications_for_service(
                service_id,
                job_id,
                status=filter_args.get('status'),
                page_size=job['notification_count']
            )['notifications']
        ),
        200,
        {
            'Content-Type': 'text/csv; charset=utf-8',
            'Content-Disposition': 'inline; filename="{} - {}.csv"'.format(
                template['name'],
                format_datetime_short(job['created_at'])
            )
        }
    )
Пример #4
0
def view_job_csv(service_id, job_id):
    job = job_api_client.get_job(service_id, job_id)["data"]
    template = service_api_client.get_service_template(
        service_id=service_id,
        template_id=job["template"],
        version=job["template_version"],
    )["data"]
    filter_args = parse_filter_args(request.args)
    filter_args["status"] = set_status_filters(filter_args)

    return Response(
        stream_with_context(
            generate_notifications_csv(
                service_id=service_id,
                job_id=job_id,
                status=filter_args.get("status"),
                page=request.args.get("page", 1),
                page_size=5000,
                format_for_csv=True,
                template_type=template["template_type"],
            )),
        mimetype="text/csv",
        headers={
            "Content-Disposition":
            'inline; filename="{} - {}.csv"'.format(
                template["name"], format_datetime_short(job["created_at"]))
        },
    )
Пример #5
0
def view_job_csv(service_id, job_id):
    job = Job.from_id(job_id, service_id=service_id)
    filter_args = parse_filter_args(request.args)
    filter_args['status'] = set_status_filters(filter_args)

    return Response(
        stream_with_context(
            generate_notifications_csv(
                service_id=service_id,
                job_id=job_id,
                status=filter_args.get('status'),
                page=request.args.get('page', 1),
                page_size=5000,
                format_for_csv=True,
                template_type=job.template_type,
            )
        ),
        mimetype='text/csv',
        headers={
            'Content-Disposition': 'inline; filename="{} - {}.csv"'.format(
                job.template['name'],
                format_datetime_short(job.created_at)
            )
        }
    )
Пример #6
0
def view_job_csv(service_id, job_id):
    job = job_api_client.get_job(service_id, job_id)['data']
    template = service_api_client.get_service_template(
        service_id=service_id,
        template_id=job['template'],
        version=job['template_version']
    )['data']
    filter_args = _parse_filter_args(request.args)
    filter_args['status'] = _set_status_filters(filter_args)

    return (
        generate_notifications_csv(
            notification_api_client.get_notifications_for_service(
                service_id,
                job_id,
                status=filter_args.get('status'),
                page_size=job['notification_count']
            )['notifications']
        ),
        200,
        {
            'Content-Type': 'text/csv; charset=utf-8',
            'Content-Disposition': 'inline; filename="{} - {}.csv"'.format(
                template['name'],
                format_datetime_short(job['created_at'])
            )
        }
    )
Пример #7
0
def view_job_csv(service_id, job_id):
    job = job_api_client.get_job(service_id, job_id)["data"]
    template = service_api_client.get_service_template(
        service_id=service_id, template_id=job["template"], version=job["template_version"]
    )["data"]
    filter_args = _parse_filter_args(request.args)
    filter_args["status"] = _set_status_filters(filter_args)

    return (
        generate_notifications_csv(
            notification_api_client.get_notifications_for_service(
                service_id, job_id, status=filter_args.get("status"), page_size=job["notification_count"]
            )["notifications"]
        ),
        200,
        {
            "Content-Type": "text/csv; charset=utf-8",
            "Content-Disposition": 'inline; filename="{} - {}.csv"'.format(
                template["name"], format_datetime_short(job["created_at"])
            ),
        },
    )