2019-12-03 15:53:32 +00:00
|
|
|
from datetime import datetime, timedelta
|
2021-03-10 13:55:06 +00:00
|
|
|
|
2020-05-11 10:51:33 +01:00
|
|
|
from freezegun import freeze_time
|
2019-12-03 15:53:32 +00:00
|
|
|
|
2023-03-02 20:20:31 -05:00
|
|
|
from app.dao.uploads_dao import dao_get_uploads_by_service_id
|
2024-01-16 14:46:17 -05:00
|
|
|
from app.enums import JobStatus, TemplateType
|
2020-12-01 15:23:38 +00:00
|
|
|
from tests.app.db import (
|
|
|
|
|
create_job,
|
2021-03-10 13:55:06 +00:00
|
|
|
create_notification,
|
2020-12-01 15:23:38 +00:00
|
|
|
create_service,
|
2021-03-10 13:55:06 +00:00
|
|
|
create_service_data_retention,
|
2020-12-01 15:23:38 +00:00
|
|
|
create_template,
|
|
|
|
|
)
|
2019-12-03 15:53:32 +00:00
|
|
|
|
|
|
|
|
|
2023-08-29 14:54:30 -07:00
|
|
|
def create_uploaded_letter(letter_template, service, status="created", created_at=None):
|
2019-12-03 15:53:32 +00:00
|
|
|
return create_notification(
|
|
|
|
|
template=letter_template,
|
|
|
|
|
to_field="file-name",
|
|
|
|
|
status=status,
|
|
|
|
|
reference="dvla-reference",
|
|
|
|
|
client_reference="file-name",
|
|
|
|
|
one_off=True,
|
|
|
|
|
created_by_id=service.users[0].id,
|
2023-08-29 14:54:30 -07:00
|
|
|
created_at=created_at,
|
2019-12-03 15:53:32 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
2019-12-06 13:10:38 +00:00
|
|
|
def create_uploaded_template(service):
|
2019-12-03 15:53:32 +00:00
|
|
|
return create_template(
|
|
|
|
|
service,
|
2024-01-18 10:26:40 -05:00
|
|
|
template_type=TemplateType.LETTER,
|
2023-08-29 14:54:30 -07:00
|
|
|
template_name="Pre-compiled PDF",
|
|
|
|
|
subject="Pre-compiled PDF",
|
2019-12-03 15:53:32 +00:00
|
|
|
content="",
|
|
|
|
|
hidden=True,
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
2022-11-10 12:33:25 -05:00
|
|
|
@freeze_time("2020-02-02 09:00") # GMT time
|
2019-12-03 15:53:32 +00:00
|
|
|
def test_get_uploads_for_service(sample_template):
|
2023-08-29 14:54:30 -07:00
|
|
|
create_service_data_retention(sample_template.service, "sms", days_of_retention=9)
|
2019-12-03 15:53:32 +00:00
|
|
|
job = create_job(sample_template, processing_started=datetime.utcnow())
|
|
|
|
|
|
|
|
|
|
other_service = create_service(service_name="other service")
|
|
|
|
|
other_template = create_template(service=other_service)
|
|
|
|
|
other_job = create_job(other_template, processing_started=datetime.utcnow())
|
|
|
|
|
|
|
|
|
|
uploads_from_db = dao_get_uploads_by_service_id(job.service_id).items
|
|
|
|
|
other_uploads_from_db = dao_get_uploads_by_service_id(other_job.service_id).items
|
|
|
|
|
|
2023-05-18 12:54:05 -07:00
|
|
|
assert len(uploads_from_db) == 1
|
2019-12-03 15:53:32 +00:00
|
|
|
|
2020-02-25 17:13:01 +00:00
|
|
|
assert uploads_from_db[0] == (
|
|
|
|
|
job.id,
|
|
|
|
|
job.original_file_name,
|
|
|
|
|
job.notification_count,
|
2023-08-29 14:54:30 -07:00
|
|
|
"sms",
|
2020-03-10 10:33:30 +00:00
|
|
|
9,
|
2020-02-25 17:13:01 +00:00
|
|
|
job.created_at,
|
|
|
|
|
job.scheduled_for,
|
|
|
|
|
job.processing_started,
|
|
|
|
|
job.job_status,
|
|
|
|
|
"job",
|
2020-02-27 13:19:51 +00:00
|
|
|
None,
|
2020-02-25 17:13:01 +00:00
|
|
|
)
|
2019-12-03 15:53:32 +00:00
|
|
|
|
2023-05-18 12:54:05 -07:00
|
|
|
assert len(other_uploads_from_db) == 1
|
2023-08-29 14:54:30 -07:00
|
|
|
assert other_uploads_from_db[0] == (
|
|
|
|
|
other_job.id,
|
|
|
|
|
other_job.original_file_name,
|
|
|
|
|
other_job.notification_count,
|
|
|
|
|
other_job.template.template_type,
|
|
|
|
|
7,
|
|
|
|
|
other_job.created_at,
|
|
|
|
|
other_job.scheduled_for,
|
|
|
|
|
other_job.processing_started,
|
|
|
|
|
other_job.job_status,
|
|
|
|
|
"job",
|
|
|
|
|
None,
|
|
|
|
|
)
|
2019-12-03 15:53:32 +00:00
|
|
|
|
2023-05-18 12:54:05 -07:00
|
|
|
assert uploads_from_db[0] != other_uploads_from_db[0]
|
2019-12-03 15:53:32 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_get_uploads_orders_by_processing_started_desc(sample_template):
|
|
|
|
|
days_ago = datetime.utcnow() - timedelta(days=3)
|
2023-08-29 14:54:30 -07:00
|
|
|
upload_1 = create_job(
|
|
|
|
|
sample_template,
|
|
|
|
|
processing_started=datetime.utcnow() - timedelta(days=1),
|
|
|
|
|
created_at=days_ago,
|
2024-01-16 14:46:17 -05:00
|
|
|
job_status=JobStatus.IN_PROGRESS,
|
2023-08-29 14:54:30 -07:00
|
|
|
)
|
|
|
|
|
upload_2 = create_job(
|
|
|
|
|
sample_template,
|
|
|
|
|
processing_started=datetime.utcnow() - timedelta(days=2),
|
|
|
|
|
created_at=days_ago,
|
2024-01-16 14:46:17 -05:00
|
|
|
job_status=JobStatus.IN_PROGRESS,
|
2023-08-29 14:54:30 -07:00
|
|
|
)
|
2019-12-03 15:53:32 +00:00
|
|
|
|
|
|
|
|
results = dao_get_uploads_by_service_id(service_id=sample_template.service_id).items
|
|
|
|
|
|
|
|
|
|
assert len(results) == 2
|
|
|
|
|
assert results[0].id == upload_1.id
|
|
|
|
|
assert results[1].id == upload_2.id
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_get_uploads_returns_empty_list(sample_service):
|
|
|
|
|
items = dao_get_uploads_by_service_id(sample_service.id).items
|
|
|
|
|
assert items == []
|