mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-08-25 00:33:58 -04:00
more test fixes & letter trimming
This commit is contained in:
@@ -355,20 +355,14 @@ def get_job_partials(job):
|
|||||||
filter_args = parse_filter_args(request.args)
|
filter_args = parse_filter_args(request.args)
|
||||||
filter_args['status'] = set_status_filters(filter_args)
|
filter_args['status'] = set_status_filters(filter_args)
|
||||||
notifications = job.get_notifications(status=filter_args['status'])
|
notifications = job.get_notifications(status=filter_args['status'])
|
||||||
if job.template_type == 'letter':
|
counts = render_template(
|
||||||
counts = render_template(
|
'partials/count.html',
|
||||||
'partials/jobs/count-letters.html',
|
counts=_get_job_counts(job),
|
||||||
job=job,
|
status=filter_args['status'],
|
||||||
)
|
notifications_deleted=(
|
||||||
else:
|
job.status == 'finished' and not notifications['notifications']
|
||||||
counts = render_template(
|
),
|
||||||
'partials/count.html',
|
)
|
||||||
counts=_get_job_counts(job),
|
|
||||||
status=filter_args['status'],
|
|
||||||
notifications_deleted=(
|
|
||||||
job.status == 'finished' and not notifications['notifications']
|
|
||||||
),
|
|
||||||
)
|
|
||||||
service_data_retention_days = current_service.get_days_of_retention(job.template_type)
|
service_data_retention_days = current_service.get_days_of_retention(job.template_type)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
|||||||
@@ -1,22 +0,0 @@
|
|||||||
{% from 'components/big-number.html' import big_number %}
|
|
||||||
|
|
||||||
<div class="govuk-grid-row bottom-gutter-2-3">
|
|
||||||
<div class="govuk-grid-column-one-half">
|
|
||||||
<div class="keyline-block">
|
|
||||||
{{ big_number(
|
|
||||||
job.notification_count,
|
|
||||||
job.notification_count|message_count_label('letter', suffix='')|capitalize,
|
|
||||||
smaller=True
|
|
||||||
)}}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="govuk-grid-column-one-half">
|
|
||||||
<div class="keyline-block">
|
|
||||||
{{ big_number(
|
|
||||||
job.letter_timings.earliest_delivery|string|format_date_short,
|
|
||||||
'Estimated delivery date',
|
|
||||||
smaller=True
|
|
||||||
)}}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
@@ -1,31 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
|
|
||||||
<title>Letter preview</title>
|
|
||||||
|
|
||||||
<style type="text/css">
|
|
||||||
body {
|
|
||||||
background-color: #dee0e2;
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
img {
|
|
||||||
display: block;
|
|
||||||
background-color: #fff;
|
|
||||||
width: 100%;
|
|
||||||
height: auto;
|
|
||||||
}
|
|
||||||
.letter-postage,
|
|
||||||
.visually-hidden {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
{{ template }}
|
|
||||||
</body>
|
|
||||||
|
|
||||||
</html>
|
|
||||||
@@ -8467,81 +8467,6 @@ ol ol .sub-navigation__item {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.letter {
|
|
||||||
padding: 141.42136% 0 0 0;
|
|
||||||
margin: 0 0 30px 0;
|
|
||||||
position: relative;
|
|
||||||
background: #dee0e2
|
|
||||||
}
|
|
||||||
|
|
||||||
.letter:before {
|
|
||||||
position: absolute;
|
|
||||||
top: 10%;
|
|
||||||
left: 50%;
|
|
||||||
margin-left: -0.5em;
|
|
||||||
font-size: 96px;
|
|
||||||
color: #fff;
|
|
||||||
overflow: hidden;
|
|
||||||
display: block;
|
|
||||||
vertical-align: bottom;
|
|
||||||
animation: ellipsis steps(4, end) 1.3s infinite;
|
|
||||||
content: "\2026";
|
|
||||||
width: 0px
|
|
||||||
}
|
|
||||||
|
|
||||||
.letter:after {
|
|
||||||
content: "";
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
box-shadow: inset 0 0 0 1px #bfc1c3
|
|
||||||
}
|
|
||||||
|
|
||||||
.letter-postage {
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
right: 0;
|
|
||||||
z-index: 10;
|
|
||||||
width: 147.45253px;
|
|
||||||
height: 124px;
|
|
||||||
margin: 0;
|
|
||||||
background-color: #9a9481;
|
|
||||||
background-size: auto 124px;
|
|
||||||
background-position: right 0;
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
background-origin: border-box;
|
|
||||||
text-indent: -1000em;
|
|
||||||
border-bottom: 1px solid #bfc1c3;
|
|
||||||
border-left: 1px solid #bfc1c3;
|
|
||||||
box-shadow: 0 2px 0 0 rgba(191, 193, 195, 0.2)
|
|
||||||
}
|
|
||||||
|
|
||||||
.letter-postage-first {
|
|
||||||
background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDIxLjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCAyNzcuMyAyMzMuMiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMjc3LjMgMjMzLjI7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5zdDB7ZmlsbDojQjdBNDdFO30KCS5zdDF7ZmlsbDojQzRCMTg2O30KCS5zdDJ7ZmlsbDojREVFMEUxO30KCS5zdDN7ZmlsbDojMkIyNzFEO30KCS5zdDR7ZmlsbDojRkZGRkZGO30KCS5zdDV7ZmlsbDp1cmwoI1NWR0lEXzFfKTtmaWxsLW9wYWNpdHk6My4wMDAwMDBlLTAyO30KPC9zdHlsZT4KPHJlY3QgeT0iMCIgY2xhc3M9InN0MCIgd2lkdGg9IjI3Ny4zIiBoZWlnaHQ9IjIzMy4yIi8+CjxyZWN0IHg9IjAiIHk9IjMiIGNsYXNzPSJzdDEiIHdpZHRoPSIyNzQuMyIgaGVpZ2h0PSIyMzAuMiIvPgo8cG9seWxpbmUgY2xhc3M9InN0MiIgcG9pbnRzPSIyNzcuMywyMzMuMiAwLDIzMy4yIDAsMCAiLz4KPHBhdGggY2xhc3M9InN0MyIgZD0iTTYyLDI4LjJ2MTQ4LjJoMTg5LjdWMjguMkg2MnoiLz4KPGc+Cgk8cGF0aCBjbGFzcz0ic3QxIiBkPSJNMjA5LjIsMTY1LjlWODMuNWgtMzEuOVY2NC4xYzQuNSwwLjEsOC44LTAuMiwxMy0xYzQuMi0wLjgsNy45LTIuMiwxMS4zLTQuMmMzLjMtMiw2LjEtNC42LDguNC03LjkKCQljMi4zLTMuMywzLjgtNy4zLDQuNS0xMi4ySDIzNXYxMjdIMjA5LjJ6Ii8+CjwvZz4KPHBvbHlnb24gY2xhc3M9InN0NCIgcG9pbnRzPSIyNzcuMywyMzMuMiAwLDIzMy4yIDAsMCAiLz4KPGxpbmVhckdyYWRpZW50IGlkPSJTVkdJRF8xXyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSI2Ny45NzUiIHkxPSI1MS40MTUiIHgyPSIxNDIuOTI1IiB5Mj0iMTI2LjM2NSIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAtMSAwIDIzMy44OSkiPgoJPHN0b3AgIG9mZnNldD0iMCIgc3R5bGU9InN0b3AtY29sb3I6I0ZGRkZGRiIvPgoJPHN0b3AgIG9mZnNldD0iMSIgc3R5bGU9InN0b3AtY29sb3I6IzAwMDAwMCIvPgo8L2xpbmVhckdyYWRpZW50Pgo8cGF0aCBjbGFzcz0ic3Q1IiBkPSJNMTYzLjgsMTM2LjFMNjIsNTAuNXYxMjZoMTQ5LjlsLTEyLjYtMTAuNiIvPgo8L3N2Zz4K)
|
|
||||||
}
|
|
||||||
|
|
||||||
.letter-postage-second {
|
|
||||||
background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDIxLjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCAyNzcuMyAyMzMuMiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMjc3LjMgMjMzLjI7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5zdDB7ZmlsbDojQjdBNDdFO30KCS5zdDF7ZmlsbDojQzRCMTg2O30KCS5zdDJ7ZmlsbDojMkIyNzFEO30KCS5zdDN7ZmlsbDojRkZGRkZGO30KCS5zdDR7ZmlsbDp1cmwoI1NWR0lEXzFfKTtmaWxsLW9wYWNpdHk6My4wMDAwMDBlLTAyO30KPC9zdHlsZT4KPHJlY3QgeT0iMCIgY2xhc3M9InN0MCIgd2lkdGg9IjI3Ny4zIiBoZWlnaHQ9IjIzMy4yIi8+CjxyZWN0IHg9IjAiIHk9IjMiIGNsYXNzPSJzdDEiIHdpZHRoPSIyNzQuMyIgaGVpZ2h0PSIyMzAuMiIvPgo8cGF0aCBjbGFzcz0ic3QyIiBkPSJNNjIsMjguMnYxNDguMmgxODkuN1YyOC4ySDYyeiBNMjQxLjcsMTY1LjloLTg2LjNjMC4yLTksMi4yLTE3LjMsNS44LTI0LjhjMy41LTguNCwxMS45LTE3LjMsMjUtMjYuNwoJYzExLjQtOC4yLDE4LjgtMTQsMjIuMi0xNy42YzUuMi01LjUsNy43LTExLjUsNy43LTE4LjFjMC01LjMtMS41LTkuOC00LjQtMTMuM2MtMy0zLjUtNy4yLTUuMy0xMi43LTUuM2MtNy41LDAtMTIuNywyLjgtMTUuNCw4LjQKCWMtMS42LDMuMi0yLjUsOC40LTIuOCwxNS41aC0yNC4xYzAuNC0xMC43LDIuMy0xOS40LDUuOC0yNmM2LjYtMTIuNiwxOC40LTE4LjksMzUuMi0xOC45YzEzLjMsMCwyMy45LDMuNywzMS44LDExLjEKCWM3LjksNy40LDExLjgsMTcuMiwxMS44LDI5LjNjMCw5LjMtMi44LDE3LjYtOC40LDI0LjhjLTMuNyw0LjgtOS43LDEwLjItMTgsMTYuMWwtOS45LDdjLTYuMiw0LjQtMTAuNSw3LjYtMTIuNyw5LjYKCWMtMi4zLDItNC4yLDQuMy01LjgsNi45aDU1djIySDI0MS43eiIvPgo8cG9seWdvbiBjbGFzcz0ic3QzIiBwb2ludHM9IjI3Ny4zLDIzMy4yIDAsMjMzLjIgMCwwICIvPgo8bGluZWFyR3JhZGllbnQgaWQ9IlNWR0lEXzFfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjY3Ljk3NSIgeTE9IjUxLjQxNSIgeDI9IjE0Mi45MjUiIHkyPSIxMjYuMzY1IiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIC0xIDAgMjMzLjg5KSI+Cgk8c3RvcCAgb2Zmc2V0PSIwIiBzdHlsZT0ic3RvcC1jb2xvcjojRkZGRkZGIi8+Cgk8c3RvcCAgb2Zmc2V0PSIxIiBzdHlsZT0ic3RvcC1jb2xvcjojMDAwMDAwIi8+CjwvbGluZWFyR3JhZGllbnQ+CjxwYXRoIGNsYXNzPSJzdDQiIGQ9Ik0xOTkuMywxNjUuOWgtNDMuOWMwLjItOSwyLjItMTcuMyw1LjgtMjQuOGMwLjctMS42LDEuNi0zLjMsMi42LTVMNjIsNTAuNXYxMjZoMTQ5LjlMMTk5LjMsMTY1Ljl6Ii8+Cjwvc3ZnPgo=)
|
|
||||||
}
|
|
||||||
|
|
||||||
.letter-sent .letter-postage:hover {
|
|
||||||
background-color: transparent;
|
|
||||||
border-color: transparent;
|
|
||||||
box-shadow: none;
|
|
||||||
background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDIxLjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCAyNzcuMyAyMzMuMiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMjc3LjMgMjMzLjI7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5zdDB7ZmlsbDp1cmwoI1NWR0lEXzFfKTtmaWxsLW9wYWNpdHk6NC4wMDAwMDBlLTAyO30KCS5zdDF7ZmlsbDojNzI2NjUwO30KCS5zdDJ7ZmlsbDojQjdBNDdFO30KPC9zdHlsZT4KPGxpbmVhckdyYWRpZW50IGlkPSJTVkdJRF8xXyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIyNTUuMzUxMSIgeTE9Ii0yMy4wOTU1IiB4Mj0iMjUuOTQ4OSIgeTI9IjI1MC4yOTU1Ij4KCTxzdG9wICBvZmZzZXQ9IjAuMzkyOSIgc3R5bGU9InN0b3AtY29sb3I6IzAwMDAwMDtzdG9wLW9wYWNpdHk6MCIvPgoJPHN0b3AgIG9mZnNldD0iMC40ODgxIiBzdHlsZT0ic3RvcC1jb2xvcjojMDAwMDAwO3N0b3Atb3BhY2l0eTowLjQ3MjMiLz4KCTxzdG9wICBvZmZzZXQ9IjAuNDkzNyIgc3R5bGU9InN0b3AtY29sb3I6IzAwMDAwMDtzdG9wLW9wYWNpdHk6MC41Ii8+Cgk8c3RvcCAgb2Zmc2V0PSIwLjQ5MzgiIHN0eWxlPSJzdG9wLWNvbG9yOiMwOTA5MDk7c3RvcC1vcGFjaXR5OjAuNDk2MyIvPgoJPHN0b3AgIG9mZnNldD0iMC40OTQiIHN0eWxlPSJzdG9wLWNvbG9yOiMzNzM3Mzc7c3RvcC1vcGFjaXR5OjAuNDc2MiIvPgoJPHN0b3AgIG9mZnNldD0iMC40OTQzIiBzdHlsZT0ic3RvcC1jb2xvcjojNjI2MjYyO3N0b3Atb3BhY2l0eTowLjQ1MzUiLz4KCTxzdG9wICBvZmZzZXQ9IjAuNDk0NiIgc3R5bGU9InN0b3AtY29sb3I6Izg4ODg4ODtzdG9wLW9wYWNpdHk6MC40MjkxIi8+Cgk8c3RvcCAgb2Zmc2V0PSIwLjQ5NDkiIHN0eWxlPSJzdG9wLWNvbG9yOiNBOEE4QTg7c3RvcC1vcGFjaXR5OjAuNDAyNSIvPgoJPHN0b3AgIG9mZnNldD0iMC40OTUzIiBzdHlsZT0ic3RvcC1jb2xvcjojQzRDNEM0O3N0b3Atb3BhY2l0eTowLjM3MzEiLz4KCTxzdG9wICBvZmZzZXQ9IjAuNDk1NyIgc3R5bGU9InN0b3AtY29sb3I6I0RBREFEQTtzdG9wLW9wYWNpdHk6MC4zNCIvPgoJPHN0b3AgIG9mZnNldD0iMC40OTYyIiBzdHlsZT0ic3RvcC1jb2xvcjojRUJFQkVCO3N0b3Atb3BhY2l0eTowLjMwMTMiLz4KCTxzdG9wICBvZmZzZXQ9IjAuNDk2OCIgc3R5bGU9InN0b3AtY29sb3I6I0Y2RjZGNjtzdG9wLW9wYWNpdHk6MC4yNTM0Ii8+Cgk8c3RvcCAgb2Zmc2V0PSIwLjQ5NzciIHN0eWxlPSJzdG9wLWNvbG9yOiNGREZERkQ7c3RvcC1vcGFjaXR5OjAuMTg2MyIvPgoJPHN0b3AgIG9mZnNldD0iMC41IiBzdHlsZT0ic3RvcC1jb2xvcjojRkZGRkZGO3N0b3Atb3BhY2l0eTowIi8+Cgk8c3RvcCAgb2Zmc2V0PSIwLjUwMDgiIHN0eWxlPSJzdG9wLWNvbG9yOiNFN0U3RTc7c3RvcC1vcGFjaXR5OjEuNjI3NzU3ZS0wMiIvPgoJPHN0b3AgIG9mZnNldD0iMC41MDMzIiBzdHlsZT0ic3RvcC1jb2xvcjojQTJBMkEyO3N0b3Atb3BhY2l0eTo2LjY0NTMxNGUtMDIiLz4KCTxzdG9wICBvZmZzZXQ9IjAuNTA1NiIgc3R5bGU9InN0b3AtY29sb3I6IzY4Njg2ODtzdG9wLW9wYWNpdHk6MC4xMTQiLz4KCTxzdG9wICBvZmZzZXQ9IjAuNTA3OCIgc3R5bGU9InN0b3AtY29sb3I6IzNCM0IzQjtzdG9wLW9wYWNpdHk6MC4xNTczIi8+Cgk8c3RvcCAgb2Zmc2V0PSIwLjUwOTciIHN0eWxlPSJzdG9wLWNvbG9yOiMxQjFCMUI7c3RvcC1vcGFjaXR5OjAuMTk1OSIvPgoJPHN0b3AgIG9mZnNldD0iMC41MTEzIiBzdHlsZT0ic3RvcC1jb2xvcjojMDcwNzA3O3N0b3Atb3BhY2l0eTowLjIyODEiLz4KCTxzdG9wICBvZmZzZXQ9IjAuNTEyNCIgc3R5bGU9InN0b3AtY29sb3I6IzAwMDAwMDtzdG9wLW9wYWNpdHk6MC4yNSIvPgoJPHN0b3AgIG9mZnNldD0iMC41Mzg4IiBzdHlsZT0ic3RvcC1jb2xvcjojMDAwMDAwO3N0b3Atb3BhY2l0eTowIi8+CjwvbGluZWFyR3JhZGllbnQ+CjxyZWN0IHg9IjIiIHk9Ii0zIiBjbGFzcz0ic3QwIiB3aWR0aD0iMjc3LjMiIGhlaWdodD0iMjMzLjIiLz4KPHBvbHlnb24gY2xhc3M9InN0MSIgcG9pbnRzPSIwLDAgMjc3LjMsMCAyNzcuMywyMzMuMiAyNzIsNi45ICIvPgo8cG9seWdvbiBjbGFzcz0ic3QyIiBwb2ludHM9IjIuNSwtMSAyNzkuOCwtMSAyNzkuOCwyMzIuMiAyNzQuNSw1LjkgIi8+Cjwvc3ZnPgo=)
|
|
||||||
}
|
|
||||||
|
|
||||||
.letter img {
|
|
||||||
display: block;
|
|
||||||
width: 100%;
|
|
||||||
background: #fff;
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
left: 0
|
|
||||||
}
|
|
||||||
|
|
||||||
input[type="search"] {
|
input[type="search"] {
|
||||||
-moz-box-sizing: border-box;
|
-moz-box-sizing: border-box;
|
||||||
-webkit-box-sizing: border-box;
|
-webkit-box-sizing: border-box;
|
||||||
|
|||||||
@@ -207,7 +207,7 @@ def test_notification_page_doesnt_link_to_template_in_tour(
|
|||||||
expected_message,
|
expected_message,
|
||||||
):
|
):
|
||||||
|
|
||||||
with freeze_time('2012-01-01 01:01'):
|
with freeze_time('2012-01-01 06:01'):
|
||||||
notification = create_notification()
|
notification = create_notification()
|
||||||
mocker.patch('app.notification_api_client.get_notification', return_value=notification)
|
mocker.patch('app.notification_api_client.get_notification', return_value=notification)
|
||||||
|
|
||||||
@@ -225,262 +225,6 @@ def test_notification_page_doesnt_link_to_template_in_tour(
|
|||||||
assert len(page.select('main p:nth-of-type(1) a')) == 0
|
assert len(page.select('main p:nth-of-type(1) a')) == 0
|
||||||
|
|
||||||
|
|
||||||
@freeze_time("2016-01-01 01:01")
|
|
||||||
def test_notification_page_shows_page_for_letter_notification(
|
|
||||||
client_request,
|
|
||||||
mocker,
|
|
||||||
fake_uuid,
|
|
||||||
):
|
|
||||||
|
|
||||||
count_of_pages = 3
|
|
||||||
|
|
||||||
notification = create_notification(notification_status='created', template_type='letter', postage='second')
|
|
||||||
mocker.patch('app.notification_api_client.get_notification', return_value=notification)
|
|
||||||
|
|
||||||
mock_page_count = mocker.patch(
|
|
||||||
'app.main.views.notifications.get_page_count_for_letter',
|
|
||||||
return_value=count_of_pages
|
|
||||||
)
|
|
||||||
|
|
||||||
page = client_request.get(
|
|
||||||
'main.view_notification',
|
|
||||||
service_id=SERVICE_ONE_ID,
|
|
||||||
notification_id=fake_uuid,
|
|
||||||
)
|
|
||||||
|
|
||||||
assert normalize_spaces(page.select('main p:nth-of-type(1)')[0].text) == (
|
|
||||||
"‘sample template’ was sent by Test User today at 1:01am"
|
|
||||||
)
|
|
||||||
assert normalize_spaces(page.select('main p:nth-of-type(2)')[0].text) == (
|
|
||||||
'Printing starts today at 5:30pm'
|
|
||||||
)
|
|
||||||
assert normalize_spaces(page.select('main p:nth-of-type(3)')[0].text) == (
|
|
||||||
'Estimated delivery date: Wednesday 6 January'
|
|
||||||
)
|
|
||||||
assert len(page.select('.letter-postage')) == 1
|
|
||||||
assert normalize_spaces(page.select_one('.letter-postage').text) == (
|
|
||||||
'Postage: second class'
|
|
||||||
)
|
|
||||||
assert page.select_one('.letter-postage')['class'] == [
|
|
||||||
'letter-postage', 'letter-postage-second'
|
|
||||||
]
|
|
||||||
assert page.select('p.notification-status') == []
|
|
||||||
|
|
||||||
letter_images = page.select('main img')
|
|
||||||
|
|
||||||
assert len(letter_images) == count_of_pages
|
|
||||||
for index in range(count_of_pages):
|
|
||||||
assert page.select('img')[index]['src'].endswith(
|
|
||||||
'.png?page={}'.format(index + 1)
|
|
||||||
)
|
|
||||||
|
|
||||||
assert len(mock_page_count.call_args_list) == 1
|
|
||||||
assert mock_page_count.call_args_list[0][0][0]['name'] == 'sample template'
|
|
||||||
assert mock_page_count.call_args_list[0][1]['values'] == {'name': 'Jo'}
|
|
||||||
|
|
||||||
|
|
||||||
@freeze_time("2020-01-01 00:00")
|
|
||||||
def test_notification_page_shows_uploaded_letter(
|
|
||||||
client_request,
|
|
||||||
mocker,
|
|
||||||
fake_uuid,
|
|
||||||
):
|
|
||||||
mocker.patch(
|
|
||||||
'app.main.views.notifications.get_letter_file_data',
|
|
||||||
return_value=(b'foo', {
|
|
||||||
'message': '',
|
|
||||||
'invalid_pages': '[]',
|
|
||||||
'page_count': '1'
|
|
||||||
})
|
|
||||||
)
|
|
||||||
mocker.patch(
|
|
||||||
'app.main.views.notifications.pdf_page_count',
|
|
||||||
return_value=1
|
|
||||||
)
|
|
||||||
mocker.patch(
|
|
||||||
'app.main.views.notifications.get_page_count_for_letter',
|
|
||||||
return_value=1,
|
|
||||||
)
|
|
||||||
|
|
||||||
notification = create_notification(
|
|
||||||
notification_status='created',
|
|
||||||
template_type='letter',
|
|
||||||
is_precompiled_letter=True,
|
|
||||||
sent_one_off=True,
|
|
||||||
)
|
|
||||||
mocker.patch('app.notification_api_client.get_notification', return_value=notification)
|
|
||||||
|
|
||||||
page = client_request.get(
|
|
||||||
'main.view_notification',
|
|
||||||
service_id=SERVICE_ONE_ID,
|
|
||||||
notification_id=fake_uuid,
|
|
||||||
)
|
|
||||||
|
|
||||||
assert normalize_spaces(page.select('main p:nth-of-type(1)')[0].text) == (
|
|
||||||
'Uploaded by Test User yesterday at midnight'
|
|
||||||
)
|
|
||||||
assert normalize_spaces(page.select('main p:nth-of-type(2)')[0].text) == (
|
|
||||||
'Printing starts today at 5:30pm'
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
@freeze_time("2016-01-01 01:01")
|
|
||||||
@pytest.mark.parametrize('is_precompiled_letter, expected_p1, expected_p2, expected_postage', (
|
|
||||||
(
|
|
||||||
True,
|
|
||||||
'Provided as PDF today at 1:01am',
|
|
||||||
'This letter passed our checks, but we will not print it because you used a test key.',
|
|
||||||
'Postage: second class'
|
|
||||||
),
|
|
||||||
(
|
|
||||||
False,
|
|
||||||
'‘sample template’ was sent today at 1:01am',
|
|
||||||
'We will not print this letter because you used a test key.',
|
|
||||||
'Postage: second class',
|
|
||||||
),
|
|
||||||
))
|
|
||||||
def test_notification_page_shows_page_for_letter_sent_with_test_key(
|
|
||||||
client_request,
|
|
||||||
mocker,
|
|
||||||
fake_uuid,
|
|
||||||
is_precompiled_letter,
|
|
||||||
expected_p1,
|
|
||||||
expected_p2,
|
|
||||||
expected_postage,
|
|
||||||
):
|
|
||||||
|
|
||||||
if is_precompiled_letter:
|
|
||||||
mocker.patch(
|
|
||||||
'app.main.views.notifications.get_letter_file_data',
|
|
||||||
return_value=(b'foo', {
|
|
||||||
'message': '',
|
|
||||||
'invalid_pages': '[]',
|
|
||||||
'page_count': '1'
|
|
||||||
})
|
|
||||||
)
|
|
||||||
|
|
||||||
mocker.patch(
|
|
||||||
'app.main.views.notifications.pdf_page_count',
|
|
||||||
return_value=1
|
|
||||||
)
|
|
||||||
|
|
||||||
mocker.patch(
|
|
||||||
'app.main.views.notifications.get_page_count_for_letter',
|
|
||||||
return_value=1,
|
|
||||||
)
|
|
||||||
|
|
||||||
notification = create_notification(
|
|
||||||
notification_status='created',
|
|
||||||
template_type='letter',
|
|
||||||
is_precompiled_letter=is_precompiled_letter,
|
|
||||||
postage='second',
|
|
||||||
key_type='test',
|
|
||||||
sent_one_off=False,
|
|
||||||
)
|
|
||||||
mocker.patch('app.notification_api_client.get_notification', return_value=notification)
|
|
||||||
|
|
||||||
page = client_request.get(
|
|
||||||
'main.view_notification',
|
|
||||||
service_id=SERVICE_ONE_ID,
|
|
||||||
notification_id=fake_uuid,
|
|
||||||
)
|
|
||||||
|
|
||||||
assert normalize_spaces(page.select('main p:nth-of-type(1)')[0].text) == (
|
|
||||||
expected_p1
|
|
||||||
)
|
|
||||||
assert normalize_spaces(page.select('main p:nth-of-type(2)')[0].text) == (
|
|
||||||
expected_p2
|
|
||||||
)
|
|
||||||
assert normalize_spaces(
|
|
||||||
page.select_one('.letter-postage').text
|
|
||||||
) == expected_postage
|
|
||||||
assert page.select('p.notification-status') == []
|
|
||||||
|
|
||||||
|
|
||||||
def test_notification_page_shows_validation_failed_precompiled_letter(
|
|
||||||
client_request,
|
|
||||||
mocker,
|
|
||||||
fake_uuid,
|
|
||||||
):
|
|
||||||
notification = create_notification(template_type='letter',
|
|
||||||
notification_status='validation-failed',
|
|
||||||
is_precompiled_letter=True
|
|
||||||
)
|
|
||||||
mocker.patch('app.notification_api_client.get_notification', return_value=notification)
|
|
||||||
metadata = {"page_count": "1", "status": "validation-failed",
|
|
||||||
"invalid_pages": "[1]",
|
|
||||||
"message": "content-outside-printable-area"}
|
|
||||||
mocker.patch('app.main.views.notifications.get_letter_file_data',
|
|
||||||
return_value=("some letter content", metadata))
|
|
||||||
mocker.patch(
|
|
||||||
'app.main.views.notifications.get_page_count_for_letter',
|
|
||||||
return_value=1,
|
|
||||||
)
|
|
||||||
|
|
||||||
page = client_request.get(
|
|
||||||
'main.view_notification',
|
|
||||||
service_id=SERVICE_ONE_ID,
|
|
||||||
notification_id=fake_uuid,
|
|
||||||
)
|
|
||||||
|
|
||||||
error_message = page.find('p', class_='notification-status-cancelled').text
|
|
||||||
assert normalize_spaces(error_message) == (
|
|
||||||
'Validation failed because content is outside the printable area on page 1.'
|
|
||||||
'Files must meet our letter specification.'
|
|
||||||
)
|
|
||||||
|
|
||||||
assert not page.select('p.notification-status')
|
|
||||||
|
|
||||||
assert page.select_one('main img')['src'].endswith('.png?page=1')
|
|
||||||
assert not page.select('.letter-postage')
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize('notification_status, expected_message', (
|
|
||||||
(
|
|
||||||
'permanent-failure',
|
|
||||||
'Permanent failure – The provider cannot print the letter. Your letter will not be dispatched.',
|
|
||||||
),
|
|
||||||
(
|
|
||||||
'cancelled',
|
|
||||||
'Cancelled 1 January at 1:02am',
|
|
||||||
),
|
|
||||||
(
|
|
||||||
'technical-failure',
|
|
||||||
'Technical failure – Notify will resend once the team have fixed the problem',
|
|
||||||
),
|
|
||||||
))
|
|
||||||
@freeze_time("2016-01-01 01:01")
|
|
||||||
def test_notification_page_shows_cancelled_or_failed_letter(
|
|
||||||
client_request,
|
|
||||||
mocker,
|
|
||||||
fake_uuid,
|
|
||||||
notification_status,
|
|
||||||
expected_message,
|
|
||||||
):
|
|
||||||
notification = create_notification(template_type='letter', notification_status=notification_status)
|
|
||||||
mocker.patch('app.notification_api_client.get_notification', return_value=notification)
|
|
||||||
mocker.patch(
|
|
||||||
'app.main.views.notifications.get_page_count_for_letter',
|
|
||||||
return_value=1,
|
|
||||||
)
|
|
||||||
|
|
||||||
page = client_request.get(
|
|
||||||
'main.view_notification',
|
|
||||||
service_id=SERVICE_ONE_ID,
|
|
||||||
notification_id=fake_uuid,
|
|
||||||
)
|
|
||||||
|
|
||||||
assert normalize_spaces(page.select('main p')[0].text) == (
|
|
||||||
"‘sample template’ was sent by Test User today at 1:01am"
|
|
||||||
)
|
|
||||||
assert normalize_spaces(page.select('main p')[1].text) == (
|
|
||||||
expected_message
|
|
||||||
)
|
|
||||||
assert not page.select('p.notification-status')
|
|
||||||
|
|
||||||
assert page.select_one('main img')['src'].endswith('.png?page=1')
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize('notification_type', ['email', 'sms'])
|
@pytest.mark.parametrize('notification_type', ['email', 'sms'])
|
||||||
@freeze_time('2016-01-01 15:00')
|
@freeze_time('2016-01-01 15:00')
|
||||||
def test_notification_page_does_not_show_cancel_link_for_sms_or_email_notifications(
|
def test_notification_page_does_not_show_cancel_link_for_sms_or_email_notifications(
|
||||||
@@ -501,266 +245,6 @@ def test_notification_page_does_not_show_cancel_link_for_sms_or_email_notificati
|
|||||||
assert 'Cancel sending this letter' not in normalize_spaces(page.text)
|
assert 'Cancel sending this letter' not in normalize_spaces(page.text)
|
||||||
|
|
||||||
|
|
||||||
@freeze_time('2016-01-01 15:00')
|
|
||||||
def test_notification_page_shows_cancel_link_for_letter_which_can_be_cancelled(
|
|
||||||
client_request,
|
|
||||||
mocker,
|
|
||||||
fake_uuid,
|
|
||||||
):
|
|
||||||
notification = create_notification(template_type='letter', notification_status='created')
|
|
||||||
mocker.patch('app.notification_api_client.get_notification', return_value=notification)
|
|
||||||
|
|
||||||
mocker.patch(
|
|
||||||
'app.main.views.notifications.get_page_count_for_letter',
|
|
||||||
return_value=1
|
|
||||||
)
|
|
||||||
|
|
||||||
page = client_request.get(
|
|
||||||
'main.view_notification',
|
|
||||||
service_id=SERVICE_ONE_ID,
|
|
||||||
notification_id=fake_uuid,
|
|
||||||
)
|
|
||||||
|
|
||||||
assert 'Cancel sending this letter' in normalize_spaces(page.text)
|
|
||||||
|
|
||||||
|
|
||||||
@freeze_time('2016-01-01 15:00')
|
|
||||||
def test_notification_page_does_not_show_cancel_link_for_letter_which_cannot_be_cancelled(
|
|
||||||
client_request,
|
|
||||||
mocker,
|
|
||||||
fake_uuid,
|
|
||||||
):
|
|
||||||
notification = create_notification(template_type='letter')
|
|
||||||
mocker.patch('app.notification_api_client.get_notification', return_value=notification)
|
|
||||||
|
|
||||||
mocker.patch(
|
|
||||||
'app.main.views.notifications.get_page_count_for_letter',
|
|
||||||
return_value=1
|
|
||||||
)
|
|
||||||
|
|
||||||
page = client_request.get(
|
|
||||||
'main.view_notification',
|
|
||||||
service_id=SERVICE_ONE_ID,
|
|
||||||
notification_id=fake_uuid,
|
|
||||||
)
|
|
||||||
|
|
||||||
assert 'Cancel sending this letter' not in normalize_spaces(page.text)
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize('postage, expected_postage_text, expected_class_value, expected_delivery', (
|
|
||||||
(
|
|
||||||
'first',
|
|
||||||
'Postage: first class',
|
|
||||||
'letter-postage-first',
|
|
||||||
'Estimated delivery date: Tuesday 5 January',
|
|
||||||
),
|
|
||||||
(
|
|
||||||
'europe',
|
|
||||||
'Postage: international',
|
|
||||||
'letter-postage-international',
|
|
||||||
'Estimated delivery date: Friday 8 January',
|
|
||||||
),
|
|
||||||
(
|
|
||||||
'rest-of-world',
|
|
||||||
'Postage: international',
|
|
||||||
'letter-postage-international',
|
|
||||||
'Estimated delivery date: Monday 11 January',
|
|
||||||
),
|
|
||||||
))
|
|
||||||
@freeze_time("2016-01-01 18:00")
|
|
||||||
def test_notification_page_shows_page_for_other_postage_classes(
|
|
||||||
client_request,
|
|
||||||
mocker,
|
|
||||||
fake_uuid,
|
|
||||||
postage,
|
|
||||||
expected_postage_text,
|
|
||||||
expected_class_value,
|
|
||||||
expected_delivery,
|
|
||||||
):
|
|
||||||
notification = create_notification(
|
|
||||||
notification_status='pending-virus-check',
|
|
||||||
template_type='letter',
|
|
||||||
postage=postage,
|
|
||||||
)
|
|
||||||
mocker.patch('app.notification_api_client.get_notification', return_value=notification)
|
|
||||||
mocker.patch('app.main.views.notifications.get_page_count_for_letter', return_value=3)
|
|
||||||
|
|
||||||
page = client_request.get(
|
|
||||||
'main.view_notification',
|
|
||||||
service_id=SERVICE_ONE_ID,
|
|
||||||
notification_id=fake_uuid,
|
|
||||||
)
|
|
||||||
|
|
||||||
assert normalize_spaces(page.select('main p:nth-of-type(2)')[0].text) == 'Printing starts tomorrow at 5:30pm'
|
|
||||||
assert normalize_spaces(page.select('main p:nth-of-type(3)')[0].text) == (
|
|
||||||
expected_delivery
|
|
||||||
)
|
|
||||||
assert normalize_spaces(page.select_one('.letter-postage').text) == (
|
|
||||||
expected_postage_text
|
|
||||||
)
|
|
||||||
assert page.select_one('.letter-postage')['class'] == [
|
|
||||||
'letter-postage', expected_class_value
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize('filetype', [
|
|
||||||
'pdf', 'png'
|
|
||||||
])
|
|
||||||
@pytest.mark.parametrize('user', [
|
|
||||||
create_active_user_with_permissions(),
|
|
||||||
create_active_caseworking_user(),
|
|
||||||
])
|
|
||||||
def test_should_show_image_of_letter_notification(
|
|
||||||
client_request,
|
|
||||||
fake_uuid,
|
|
||||||
mocker,
|
|
||||||
filetype,
|
|
||||||
user,
|
|
||||||
):
|
|
||||||
mocker.patch('app.user_api_client.get_user', return_value=user)
|
|
||||||
|
|
||||||
notification = create_notification(template_type='letter')
|
|
||||||
mocker.patch('app.notification_api_client.get_notification', return_value=notification)
|
|
||||||
|
|
||||||
mocker.patch(
|
|
||||||
'app.main.views.notifications.notification_api_client.get_notification_letter_preview',
|
|
||||||
return_value={
|
|
||||||
'content': base64.b64encode(b'foo').decode('utf-8')
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
response = client_request.get_response(
|
|
||||||
'main.view_letter_notification_as_preview',
|
|
||||||
service_id=SERVICE_ONE_ID,
|
|
||||||
notification_id=fake_uuid,
|
|
||||||
filetype=filetype
|
|
||||||
)
|
|
||||||
|
|
||||||
assert response.get_data(as_text=True) == 'foo'
|
|
||||||
|
|
||||||
|
|
||||||
def test_should_show_image_of_letter_notification_that_failed_validation(
|
|
||||||
client_request,
|
|
||||||
fake_uuid,
|
|
||||||
mocker
|
|
||||||
):
|
|
||||||
notification = create_notification(template_type='letter', notification_status='validation-failed')
|
|
||||||
mocker.patch('app.notification_api_client.get_notification', return_value=notification)
|
|
||||||
|
|
||||||
metadata = {
|
|
||||||
'message': 'content-outside-printable-area',
|
|
||||||
'invalid_pages': '[1]',
|
|
||||||
'page_count': '1'
|
|
||||||
}
|
|
||||||
mocker.patch(
|
|
||||||
'app.main.views.notifications.notification_api_client.get_notification_letter_preview',
|
|
||||||
return_value={
|
|
||||||
'content': base64.b64encode(b'foo').decode('utf-8'),
|
|
||||||
'metadata': metadata
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
response = client_request.get_response(
|
|
||||||
'main.view_letter_notification_as_preview',
|
|
||||||
service_id=SERVICE_ONE_ID,
|
|
||||||
notification_id=fake_uuid,
|
|
||||||
filetype='png',
|
|
||||||
with_metadata=True,
|
|
||||||
)
|
|
||||||
|
|
||||||
assert response.get_data(as_text=True) == 'foo', metadata
|
|
||||||
|
|
||||||
|
|
||||||
def test_should_show_image_of_templated_letter_notification_that_failed_validation_because_letter_is_too_long(
|
|
||||||
client_request,
|
|
||||||
mocker,
|
|
||||||
fake_uuid,
|
|
||||||
):
|
|
||||||
notification = create_notification(
|
|
||||||
notification_status='validation-failed',
|
|
||||||
template_type='letter')
|
|
||||||
mocker.patch('app.notification_api_client.get_notification', return_value=notification)
|
|
||||||
mocker.patch('app.main.views.notifications.get_page_count_for_letter', return_value=11)
|
|
||||||
|
|
||||||
page = client_request.get(
|
|
||||||
'main.view_notification',
|
|
||||||
service_id=SERVICE_ONE_ID,
|
|
||||||
notification_id=fake_uuid,
|
|
||||||
)
|
|
||||||
|
|
||||||
error_message = page.find('p', class_='notification-status-cancelled').text
|
|
||||||
assert normalize_spaces(error_message) == \
|
|
||||||
"Validation failed because this letter is 11 pages long.Letters must be 10 pages or "\
|
|
||||||
"less (5 double-sided sheets of paper)."
|
|
||||||
|
|
||||||
|
|
||||||
def test_should_show_preview_error_image_letter_notification_on_preview_error(
|
|
||||||
client_request,
|
|
||||||
fake_uuid,
|
|
||||||
mocker,
|
|
||||||
):
|
|
||||||
notification = create_notification(template_type='letter')
|
|
||||||
mocker.patch('app.notification_api_client.get_notification', return_value=notification)
|
|
||||||
|
|
||||||
mocker.patch(
|
|
||||||
'app.main.views.notifications.notification_api_client.get_notification_letter_preview',
|
|
||||||
side_effect=APIError
|
|
||||||
)
|
|
||||||
|
|
||||||
mocker.patch("builtins.open", mock_open(read_data=b"preview error image"))
|
|
||||||
|
|
||||||
response = client_request.get_response(
|
|
||||||
'main.view_letter_notification_as_preview',
|
|
||||||
service_id=SERVICE_ONE_ID,
|
|
||||||
notification_id=fake_uuid,
|
|
||||||
filetype='png',
|
|
||||||
)
|
|
||||||
|
|
||||||
assert response.get_data(as_text=True) == 'preview error image'
|
|
||||||
|
|
||||||
|
|
||||||
def test_notification_page_shows_error_message_if_precompiled_letter_cannot_be_opened(
|
|
||||||
client_request,
|
|
||||||
mocker,
|
|
||||||
fake_uuid,
|
|
||||||
):
|
|
||||||
notification = create_notification(
|
|
||||||
notification_status='validation-failed',
|
|
||||||
template_type='letter',
|
|
||||||
is_precompiled_letter=True)
|
|
||||||
mocker.patch('app.notification_api_client.get_notification', return_value=notification)
|
|
||||||
mocker.patch(
|
|
||||||
'app.main.views.notifications.get_letter_file_data',
|
|
||||||
side_effect=PdfReadError()
|
|
||||||
)
|
|
||||||
mocker.patch(
|
|
||||||
'app.main.views.notifications.pdf_page_count',
|
|
||||||
side_effect=PdfReadError()
|
|
||||||
)
|
|
||||||
page = client_request.get(
|
|
||||||
'main.view_notification',
|
|
||||||
service_id=SERVICE_ONE_ID,
|
|
||||||
notification_id=fake_uuid,
|
|
||||||
)
|
|
||||||
|
|
||||||
error_message = page.find('p', class_='notification-status-cancelled').text
|
|
||||||
assert normalize_spaces(error_message) == \
|
|
||||||
"Validation failed – There’s a problem with your letter. Notify cannot read this PDF."
|
|
||||||
|
|
||||||
|
|
||||||
def test_should_404_for_unknown_extension(
|
|
||||||
client_request,
|
|
||||||
fake_uuid,
|
|
||||||
):
|
|
||||||
client_request.get(
|
|
||||||
'main.view_letter_notification_as_preview',
|
|
||||||
service_id=SERVICE_ONE_ID,
|
|
||||||
notification_id=fake_uuid,
|
|
||||||
filetype='docx',
|
|
||||||
_expected_status=404,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize('service_permissions, template_type, link_expected', [
|
@pytest.mark.parametrize('service_permissions, template_type, link_expected', [
|
||||||
([], '', False),
|
([], '', False),
|
||||||
(['inbound_sms'], 'email', False),
|
(['inbound_sms'], 'email', False),
|
||||||
@@ -808,120 +292,6 @@ def test_notification_page_has_link_to_send_another_for_sms(
|
|||||||
assert conversation_link not in str(page.select_one('main'))
|
assert conversation_link not in str(page.select_one('main'))
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize('template_type, expected_link', [
|
|
||||||
('email', lambda notification_id: None),
|
|
||||||
('sms', lambda notification_id: None),
|
|
||||||
('letter', partial(
|
|
||||||
url_for,
|
|
||||||
'main.view_letter_notification_as_preview',
|
|
||||||
service_id=SERVICE_ONE_ID,
|
|
||||||
filetype='pdf'
|
|
||||||
)),
|
|
||||||
])
|
|
||||||
def test_notification_page_has_link_to_download_letter(
|
|
||||||
client_request,
|
|
||||||
mocker,
|
|
||||||
fake_uuid,
|
|
||||||
service_one,
|
|
||||||
template_type,
|
|
||||||
expected_link,
|
|
||||||
):
|
|
||||||
notification = create_notification(template_type=template_type)
|
|
||||||
mocker.patch('app.notification_api_client.get_notification', return_value=notification)
|
|
||||||
mocker.patch(
|
|
||||||
'app.main.views.notifications.get_page_count_for_letter',
|
|
||||||
return_value=1
|
|
||||||
)
|
|
||||||
|
|
||||||
page = client_request.get(
|
|
||||||
'main.view_notification',
|
|
||||||
service_id=SERVICE_ONE_ID,
|
|
||||||
notification_id=fake_uuid,
|
|
||||||
)
|
|
||||||
|
|
||||||
try:
|
|
||||||
download_link = page.select_one('a[download]')['href']
|
|
||||||
except TypeError:
|
|
||||||
download_link = None
|
|
||||||
|
|
||||||
assert download_link == expected_link(notification_id=fake_uuid)
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize('is_precompiled_letter, has_template_link', [
|
|
||||||
(True, False),
|
|
||||||
(False, True),
|
|
||||||
])
|
|
||||||
def test_notification_page_has_expected_template_link_for_letter(
|
|
||||||
client_request,
|
|
||||||
mocker,
|
|
||||||
fake_uuid,
|
|
||||||
service_one,
|
|
||||||
is_precompiled_letter,
|
|
||||||
has_template_link
|
|
||||||
):
|
|
||||||
|
|
||||||
if is_precompiled_letter:
|
|
||||||
mocker.patch(
|
|
||||||
'app.main.views.notifications.get_letter_file_data',
|
|
||||||
side_effect=[(b'foo', {"message": "", "invalid_pages": "[]", "page_count": "1"}), b'foo']
|
|
||||||
)
|
|
||||||
|
|
||||||
mocker.patch(
|
|
||||||
'app.main.views.notifications.pdf_page_count',
|
|
||||||
return_value=1
|
|
||||||
)
|
|
||||||
|
|
||||||
notification = create_notification(template_type='letter', is_precompiled_letter=is_precompiled_letter)
|
|
||||||
mocker.patch('app.notification_api_client.get_notification', return_value=notification)
|
|
||||||
mocker.patch(
|
|
||||||
'app.main.views.notifications.get_page_count_for_letter',
|
|
||||||
return_value=1
|
|
||||||
)
|
|
||||||
|
|
||||||
page = client_request.get(
|
|
||||||
'main.view_notification',
|
|
||||||
service_id=SERVICE_ONE_ID,
|
|
||||||
notification_id=fake_uuid,
|
|
||||||
)
|
|
||||||
|
|
||||||
link = page.select_one('main > p:nth-of-type(1) > a')
|
|
||||||
|
|
||||||
if has_template_link:
|
|
||||||
assert link
|
|
||||||
else:
|
|
||||||
assert link is None
|
|
||||||
|
|
||||||
|
|
||||||
def test_should_show_image_of_precompiled_letter_notification(
|
|
||||||
client_request,
|
|
||||||
fake_uuid,
|
|
||||||
mocker,
|
|
||||||
):
|
|
||||||
notification = create_notification(template_type='letter', is_precompiled_letter=True)
|
|
||||||
mocker.patch('app.notification_api_client.get_notification', return_value=notification)
|
|
||||||
mock_pdf_page_count = mocker.patch(
|
|
||||||
'app.main.views.notifications.pdf_page_count',
|
|
||||||
return_value=1
|
|
||||||
)
|
|
||||||
|
|
||||||
mocker.patch(
|
|
||||||
'app.main.views.notifications.notification_api_client.get_notification_letter_preview',
|
|
||||||
return_value={
|
|
||||||
'content': base64.b64encode(b'foo').decode('utf-8')
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
response = client_request.get_response(
|
|
||||||
'main.view_letter_notification_as_preview',
|
|
||||||
service_id=SERVICE_ONE_ID,
|
|
||||||
notification_id=fake_uuid,
|
|
||||||
filetype="png",
|
|
||||||
)
|
|
||||||
|
|
||||||
assert response.get_data(as_text=True) == 'foo'
|
|
||||||
assert mock_pdf_page_count.called_once()
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize('notification_type', ['sms', 'email'])
|
@pytest.mark.parametrize('notification_type', ['sms', 'email'])
|
||||||
def test_should_show_reply_to_from_notification(
|
def test_should_show_reply_to_from_notification(
|
||||||
mocker,
|
mocker,
|
||||||
|
|||||||
Reference in New Issue
Block a user