mirror of
https://github.com/GSA/notifications-api.git
synced 2026-09-11 10:28:55 -04:00
Merge branch 'main' of https://github.com/GSA/notifications-api into notify-260
This commit is contained in:
@@ -210,8 +210,6 @@ def test_fetch_billing_data_for_day_returns_empty_list(notify_db_session):
|
||||
assert results == []
|
||||
|
||||
|
||||
# TODO: ready for reactivation?
|
||||
@pytest.mark.skip(reason="Needs updating for TTS: Timezone handling")
|
||||
def test_fetch_billing_data_for_day_uses_correct_table(notify_db_session):
|
||||
service = create_service()
|
||||
create_service_data_retention(service, notification_type='email', days_of_retention=3)
|
||||
|
||||
@@ -116,7 +116,6 @@ def test_get_jobs_for_service(sample_template):
|
||||
assert one_job_from_db != other_job_from_db
|
||||
|
||||
|
||||
@pytest.mark.skip(reason="Needs updating for TTS: Timezone handling")
|
||||
def test_get_jobs_for_service_with_limit_days_param(sample_template):
|
||||
one_job = create_job(sample_template)
|
||||
old_job = create_job(sample_template, created_at=datetime.now() - timedelta(days=8))
|
||||
|
||||
@@ -90,10 +90,6 @@ def test_update_organisation(notify_db_session):
|
||||
(['ABC', 'DEF'], {'abc', 'def'}),
|
||||
([], set()),
|
||||
(None, {'123', '456'}),
|
||||
pytest.param(
|
||||
['abc', 'ABC'], {'abc'},
|
||||
marks=pytest.mark.xfail(raises=IntegrityError)
|
||||
),
|
||||
))
|
||||
def test_update_organisation_domains_lowercases(
|
||||
notify_db_session,
|
||||
@@ -113,6 +109,29 @@ def test_update_organisation_domains_lowercases(
|
||||
assert {domain.domain for domain in organisation.domains} == expected_domains
|
||||
|
||||
|
||||
@pytest.mark.parametrize('domain_list, expected_domains', (
|
||||
(['abc', 'ABC'], {'abc'}),
|
||||
))
|
||||
def test_update_organisation_domains_lowercases_integrity_error(
|
||||
notify_db_session,
|
||||
domain_list,
|
||||
expected_domains,
|
||||
):
|
||||
create_organisation()
|
||||
|
||||
organisation = Organisation.query.one()
|
||||
|
||||
# Seed some domains
|
||||
dao_update_organisation(organisation.id, domains=['123', '456'])
|
||||
|
||||
with pytest.raises(expected_exception=IntegrityError):
|
||||
|
||||
# This should overwrite the seeded domains
|
||||
dao_update_organisation(organisation.id, domains=domain_list)
|
||||
|
||||
assert {domain.domain for domain in organisation.domains} == expected_domains
|
||||
|
||||
|
||||
def test_update_organisation_does_not_update_the_service_if_certain_attributes_not_provided(
|
||||
sample_service,
|
||||
sample_organisation,
|
||||
|
||||
@@ -193,44 +193,6 @@ def test_get_sms_providers_for_update_returns_nothing_if_recent_updates(restore_
|
||||
assert not resp
|
||||
|
||||
|
||||
@pytest.mark.skip(reason="Reenable if/when we add a second SMS provider")
|
||||
@pytest.mark.parametrize(['starting_priorities', 'expected_priorities'], [
|
||||
({'sns': 50, 'other': 50}, {'sns': 40, 'other': 60}),
|
||||
({'sns': 0, 'other': 20}, {'sns': 0, 'other': 30}), # lower bound respected
|
||||
({'sns': 50, 'other': 100}, {'sns': 40, 'other': 100}), # upper bound respected
|
||||
|
||||
# document what happens if they have unexpected values outside of the 0 - 100 range (due to manual setting from
|
||||
# the admin app). the code never causes further issues, but sometimes doesn't actively reset the vaues to 0-100.
|
||||
({'sns': 150, 'other': 50}, {'sns': 140, 'other': 60}),
|
||||
({'sns': 50, 'other': 150}, {'sns': 40, 'other': 100}),
|
||||
|
||||
({'sns': -100, 'other': 50}, {'sns': 0, 'other': 60}),
|
||||
({'sns': 50, 'other': -100}, {'sns': 40, 'other': -90}),
|
||||
])
|
||||
def test_reduce_sms_provider_priority_adjusts_provider_priorities(
|
||||
mocker,
|
||||
restore_provider_details,
|
||||
notify_user,
|
||||
starting_priorities,
|
||||
expected_priorities,
|
||||
):
|
||||
mock_adjust = mocker.patch('app.dao.provider_details_dao._adjust_provider_priority')
|
||||
|
||||
sns = get_provider_details_by_identifier('sns')
|
||||
other = get_provider_details_by_identifier('other')
|
||||
|
||||
sns.priority = starting_priorities['sns']
|
||||
other.priority = starting_priorities['other']
|
||||
# need to update these manually to avoid triggering the `onupdate` clause of the updated_at column
|
||||
ProviderDetails.query.filter(ProviderDetails.notification_type == 'sms').update({'updated_at': datetime.min})
|
||||
|
||||
# switch away from sns. currently both 50/50
|
||||
dao_reduce_sms_provider_priority('sns', time_threshold=timedelta(minutes=10))
|
||||
|
||||
mock_adjust.assert_any_call(other, expected_priorities['other'])
|
||||
mock_adjust.assert_any_call(sns, expected_priorities['sns'])
|
||||
|
||||
|
||||
def test_reduce_sms_provider_priority_does_nothing_if_providers_have_recently_changed(
|
||||
mocker,
|
||||
restore_provider_details,
|
||||
@@ -255,38 +217,6 @@ def test_reduce_sms_provider_priority_does_nothing_if_there_is_only_one_active_p
|
||||
assert mock_adjust.called is False
|
||||
|
||||
|
||||
@pytest.mark.skip(reason="Reenable if/when we add a second SMS provider")
|
||||
@pytest.mark.parametrize('existing_sns, existing_other, new_sns, new_other', [
|
||||
(50, 50, 60, 40), # not just 50/50 - 60/40 specifically
|
||||
(65, 35, 60, 40), # doesn't overshoot if there's less than 10 difference
|
||||
(0, 100, 10, 90), # only adjusts by 10
|
||||
(100, 100, 90, 90), # it tries to fix weird data - it will reduce both if needs be
|
||||
])
|
||||
def test_adjust_provider_priority_back_to_resting_points_updates_all_providers(
|
||||
restore_provider_details,
|
||||
mocker,
|
||||
existing_sns,
|
||||
existing_other,
|
||||
new_sns,
|
||||
new_other
|
||||
):
|
||||
sns = get_provider_details_by_identifier('sns')
|
||||
other = get_provider_details_by_identifier('other')
|
||||
sns.priority = existing_sns
|
||||
other.priority = existing_other
|
||||
|
||||
mock_adjust = mocker.patch('app.dao.provider_details_dao._adjust_provider_priority')
|
||||
mock_get_providers = mocker.patch('app.dao.provider_details_dao._get_sms_providers_for_update', return_value=[
|
||||
sns, other
|
||||
])
|
||||
|
||||
dao_adjust_provider_priority_back_to_resting_points()
|
||||
|
||||
mock_get_providers.assert_called_once_with(timedelta(hours=1))
|
||||
mock_adjust.assert_any_call(sns, new_sns)
|
||||
mock_adjust.assert_any_call(other, new_other)
|
||||
|
||||
|
||||
def test_adjust_provider_priority_back_to_resting_points_does_nothing_if_theyre_already_at_right_values(
|
||||
restore_provider_details,
|
||||
mocker,
|
||||
|
||||
@@ -3,6 +3,7 @@ from datetime import datetime, timedelta
|
||||
from unittest import mock
|
||||
|
||||
import pytest
|
||||
import sqlalchemy
|
||||
from freezegun import freeze_time
|
||||
from sqlalchemy.exc import IntegrityError
|
||||
from sqlalchemy.orm.exc import NoResultFound
|
||||
@@ -585,7 +586,6 @@ def test_update_service_permission_creates_a_history_record_with_current_data(no
|
||||
assert history[2].version == 3
|
||||
|
||||
|
||||
@pytest.mark.skip(reason="Needs updating for TTS: Failing for unknown reason")
|
||||
def test_create_service_and_history_is_transactional(notify_db_session):
|
||||
user = create_user()
|
||||
assert Service.query.count() == 0
|
||||
@@ -596,10 +596,11 @@ def test_create_service_and_history_is_transactional(notify_db_session):
|
||||
restricted=False,
|
||||
created_by=user)
|
||||
|
||||
with pytest.raises(IntegrityError) as excinfo:
|
||||
try:
|
||||
dao_create_service(service, user)
|
||||
except sqlalchemy.exc.IntegrityError as seeei:
|
||||
assert 'null value in column "name" of relation "services_history" violates not-null constraint' in str(seeei)
|
||||
|
||||
assert 'column "name" violates not-null constraint' in str(excinfo.value)
|
||||
assert Service.query.count() == 0
|
||||
assert Service.get_history_model().query.count() == 0
|
||||
|
||||
@@ -826,7 +827,6 @@ def test_dao_fetch_todays_stats_for_service_only_includes_today_during_bst(notif
|
||||
assert not stats.get('permanent-failure')
|
||||
|
||||
|
||||
@pytest.mark.skip(reason="Need a better way to test variable DST date")
|
||||
def test_dao_fetch_todays_stats_for_service_only_includes_today_when_clocks_fall_back(notify_db_session):
|
||||
template = create_template(service=create_service())
|
||||
with freeze_time('2021-10-30T22:59:59'):
|
||||
@@ -871,7 +871,6 @@ def test_dao_fetch_todays_stats_for_service_only_includes_during_utc(notify_db_s
|
||||
assert not stats.get('permanent-failure')
|
||||
|
||||
|
||||
@pytest.mark.skip(reason="Needs updating for TTS: Timezone handling")
|
||||
def test_dao_fetch_todays_stats_for_all_services_includes_all_services(notify_db_session):
|
||||
# two services, each with an email and sms notification
|
||||
service1 = create_service(service_name='service 1', email_from='service.1')
|
||||
@@ -910,7 +909,6 @@ def test_dao_fetch_todays_stats_for_all_services_only_includes_today(notify_db_s
|
||||
assert stats['failed'] == 1
|
||||
|
||||
|
||||
@pytest.mark.skip(reason="Needs updating for TTS: Timezone handling")
|
||||
def test_dao_fetch_todays_stats_for_all_services_groups_correctly(notify_db_session):
|
||||
service1 = create_service(service_name='service 1', email_from='service.1')
|
||||
service2 = create_service(service_name='service 2', email_from='service.2')
|
||||
@@ -937,7 +935,6 @@ def test_dao_fetch_todays_stats_for_all_services_groups_correctly(notify_db_sess
|
||||
service2.created_at, 'sms', 'created', 1) in stats
|
||||
|
||||
|
||||
@pytest.mark.skip(reason="Needs updating for TTS: Timezone handling")
|
||||
def test_dao_fetch_todays_stats_for_all_services_includes_all_keys_by_default(notify_db_session):
|
||||
template = create_template(service=create_service())
|
||||
create_notification(template=template, key_type=KEY_TYPE_NORMAL)
|
||||
@@ -950,7 +947,6 @@ def test_dao_fetch_todays_stats_for_all_services_includes_all_keys_by_default(no
|
||||
assert stats[0].count == 3
|
||||
|
||||
|
||||
@pytest.mark.skip(reason="Needs updating for TTS: Timezone handling")
|
||||
def test_dao_fetch_todays_stats_for_all_services_can_exclude_from_test_key(notify_db_session):
|
||||
template = create_template(service=create_service())
|
||||
create_notification(template=template, key_type=KEY_TYPE_NORMAL)
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
import pytest
|
||||
from freezegun import freeze_time
|
||||
|
||||
from app.dao.uploads_dao import dao_get_uploads_by_service_id
|
||||
@@ -38,39 +37,21 @@ def create_uploaded_template(service):
|
||||
)
|
||||
|
||||
|
||||
@pytest.mark.skip(reason="Investigate what remains after removing letters")
|
||||
@freeze_time("2020-02-02 09:00") # GMT time
|
||||
def test_get_uploads_for_service(sample_template):
|
||||
create_service_data_retention(sample_template.service, 'sms', days_of_retention=9)
|
||||
job = create_job(sample_template, processing_started=datetime.utcnow())
|
||||
letter_template = create_uploaded_template(sample_template.service)
|
||||
letter = create_uploaded_letter(letter_template, sample_template.service)
|
||||
|
||||
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())
|
||||
other_letter_template = create_uploaded_template(other_service)
|
||||
create_uploaded_letter(other_letter_template, other_service)
|
||||
|
||||
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
|
||||
|
||||
assert len(uploads_from_db) == 2
|
||||
assert len(uploads_from_db) == 1
|
||||
|
||||
assert uploads_from_db[0] == (
|
||||
None,
|
||||
'Uploaded letters',
|
||||
1,
|
||||
'letter',
|
||||
None,
|
||||
letter.created_at.replace(hour=22, minute=30, second=0, microsecond=0),
|
||||
None,
|
||||
letter.created_at.replace(hour=22, minute=30, second=0, microsecond=0),
|
||||
None,
|
||||
'letter_day',
|
||||
None,
|
||||
)
|
||||
assert uploads_from_db[1] == (
|
||||
job.id,
|
||||
job.original_file_name,
|
||||
job.notification_count,
|
||||
@@ -84,21 +65,8 @@ def test_get_uploads_for_service(sample_template):
|
||||
None,
|
||||
)
|
||||
|
||||
assert len(other_uploads_from_db) == 2
|
||||
assert other_uploads_from_db[0] == (
|
||||
None,
|
||||
'Uploaded letters',
|
||||
1,
|
||||
'letter',
|
||||
None,
|
||||
letter.created_at.replace(hour=22, minute=30, second=0, microsecond=0),
|
||||
None,
|
||||
letter.created_at.replace(hour=22, minute=30, second=0, microsecond=0),
|
||||
None,
|
||||
"letter_day",
|
||||
None,
|
||||
)
|
||||
assert other_uploads_from_db[1] == (other_job.id,
|
||||
assert len(other_uploads_from_db) == 1
|
||||
assert other_uploads_from_db[0] == (other_job.id,
|
||||
other_job.original_file_name,
|
||||
other_job.notification_count,
|
||||
other_job.template.template_type,
|
||||
@@ -110,81 +78,9 @@ def test_get_uploads_for_service(sample_template):
|
||||
"job",
|
||||
None)
|
||||
|
||||
assert uploads_from_db[1] != other_uploads_from_db[1]
|
||||
assert uploads_from_db[0] != other_uploads_from_db[0]
|
||||
|
||||
|
||||
@pytest.mark.skip(reason="Investigate what remains after removing letters")
|
||||
@freeze_time("2020-02-02 18:00")
|
||||
def test_get_uploads_for_service_groups_letters(sample_template):
|
||||
letter_template = create_uploaded_template(sample_template.service)
|
||||
|
||||
# Just gets into yesterday’s print run
|
||||
create_uploaded_letter(letter_template, sample_template.service, created_at=(
|
||||
datetime(2020, 2, 1, 22, 29, 59)
|
||||
))
|
||||
|
||||
# Yesterday but in today’s print run
|
||||
create_uploaded_letter(letter_template, sample_template.service, created_at=(
|
||||
datetime(2020, 2, 1, 22, 30)
|
||||
))
|
||||
# First thing today
|
||||
create_uploaded_letter(letter_template, sample_template.service, created_at=(
|
||||
datetime(2020, 2, 2, 5, 0)
|
||||
))
|
||||
# Just before today’s print deadline
|
||||
create_uploaded_letter(letter_template, sample_template.service, created_at=(
|
||||
datetime(2020, 2, 2, 22, 29, 59)
|
||||
))
|
||||
|
||||
# Just missed today’s print deadline
|
||||
create_uploaded_letter(letter_template, sample_template.service, created_at=(
|
||||
datetime(2020, 2, 2, 22, 30)
|
||||
))
|
||||
|
||||
uploads_from_db = dao_get_uploads_by_service_id(sample_template.service_id).items
|
||||
|
||||
assert [
|
||||
(upload.notification_count, upload.created_at)
|
||||
for upload in uploads_from_db
|
||||
] == [
|
||||
(1, datetime(2020, 2, 3, 22, 30)),
|
||||
(3, datetime(2020, 2, 2, 22, 30)),
|
||||
(1, datetime(2020, 2, 1, 22, 30)),
|
||||
]
|
||||
|
||||
|
||||
@pytest.mark.skip(reason="Investigate what remains after removing letters")
|
||||
def test_get_uploads_does_not_return_cancelled_jobs_or_letters(sample_template):
|
||||
create_job(sample_template, job_status='scheduled')
|
||||
create_job(sample_template, job_status='cancelled')
|
||||
letter_template = create_uploaded_template(sample_template.service)
|
||||
create_uploaded_letter(letter_template, sample_template.service, status='cancelled')
|
||||
|
||||
assert len(dao_get_uploads_by_service_id(sample_template.service_id).items) == 0
|
||||
|
||||
|
||||
@pytest.mark.skip(reason="Investigate what remains after removing letters")
|
||||
def test_get_uploads_orders_by_created_at_desc(sample_template):
|
||||
letter_template = create_uploaded_template(sample_template.service)
|
||||
|
||||
upload_1 = create_job(sample_template, processing_started=datetime.utcnow(),
|
||||
job_status=JOB_STATUS_IN_PROGRESS)
|
||||
upload_2 = create_job(sample_template, processing_started=datetime.utcnow(),
|
||||
job_status=JOB_STATUS_IN_PROGRESS)
|
||||
create_uploaded_letter(letter_template, sample_template.service, status='delivered')
|
||||
|
||||
results = dao_get_uploads_by_service_id(service_id=sample_template.service_id).items
|
||||
|
||||
assert [
|
||||
(result.id, result.upload_type) for result in results
|
||||
] == [
|
||||
(None, 'letter_day'),
|
||||
(upload_2.id, 'job'),
|
||||
(upload_1.id, 'job'),
|
||||
]
|
||||
|
||||
|
||||
@pytest.mark.skip(reason="Investigate what remains after removing letters")
|
||||
def test_get_uploads_orders_by_processing_started_desc(sample_template):
|
||||
days_ago = datetime.utcnow() - timedelta(days=3)
|
||||
upload_1 = create_job(sample_template, processing_started=datetime.utcnow() - timedelta(days=1),
|
||||
@@ -201,121 +97,6 @@ def test_get_uploads_orders_by_processing_started_desc(sample_template):
|
||||
assert results[1].id == upload_2.id
|
||||
|
||||
|
||||
@pytest.mark.skip(reason="Investigate what remains after removing letters")
|
||||
@freeze_time("2020-10-27 16:15") # GMT time
|
||||
def test_get_uploads_orders_by_processing_started_and_created_at_desc(sample_template):
|
||||
letter_template = create_uploaded_template(sample_template.service)
|
||||
|
||||
days_ago = datetime.utcnow() - timedelta(days=4)
|
||||
create_uploaded_letter(letter_template, service=letter_template.service)
|
||||
upload_2 = create_job(sample_template, processing_started=datetime.utcnow() - timedelta(days=1),
|
||||
created_at=days_ago,
|
||||
job_status=JOB_STATUS_IN_PROGRESS)
|
||||
upload_3 = create_job(sample_template, processing_started=datetime.utcnow() - timedelta(days=2),
|
||||
created_at=days_ago,
|
||||
job_status=JOB_STATUS_IN_PROGRESS)
|
||||
create_uploaded_letter(letter_template, service=letter_template.service,
|
||||
created_at=datetime.utcnow() - timedelta(days=3))
|
||||
|
||||
results = dao_get_uploads_by_service_id(service_id=sample_template.service_id).items
|
||||
|
||||
assert len(results) == 4
|
||||
assert results[0].id is None
|
||||
assert results[1].id == upload_2.id
|
||||
assert results[2].id == upload_3.id
|
||||
assert results[3].id is None
|
||||
|
||||
|
||||
@pytest.mark.skip(reason="Investigate what remains after removing letters")
|
||||
@freeze_time('2020-04-02 14:00') # Few days after the clocks go forward
|
||||
def test_get_uploads_only_gets_uploads_within_service_retention_period(sample_template):
|
||||
letter_template = create_uploaded_template(sample_template.service)
|
||||
create_service_data_retention(sample_template.service, 'sms', days_of_retention=3)
|
||||
|
||||
days_ago = datetime.utcnow() - timedelta(days=4)
|
||||
upload_1 = create_uploaded_letter(letter_template, service=letter_template.service)
|
||||
upload_2 = create_job(
|
||||
sample_template, processing_started=datetime.utcnow() - timedelta(days=1), created_at=days_ago,
|
||||
job_status=JOB_STATUS_IN_PROGRESS
|
||||
)
|
||||
# older than custom retention for sms:
|
||||
create_job(
|
||||
sample_template, processing_started=datetime.utcnow() - timedelta(days=5), created_at=days_ago,
|
||||
job_status=JOB_STATUS_IN_PROGRESS
|
||||
)
|
||||
upload_3 = create_uploaded_letter(
|
||||
letter_template, service=letter_template.service, created_at=datetime.utcnow() - timedelta(days=3)
|
||||
)
|
||||
|
||||
# older than retention for sms but within letter retention:
|
||||
upload_4 = create_uploaded_letter(
|
||||
letter_template, service=letter_template.service, created_at=datetime.utcnow() - timedelta(days=6)
|
||||
)
|
||||
|
||||
# older than default retention for letters:
|
||||
create_uploaded_letter(
|
||||
letter_template, service=letter_template.service, created_at=datetime.utcnow() - timedelta(days=8)
|
||||
)
|
||||
|
||||
results = dao_get_uploads_by_service_id(service_id=sample_template.service_id).items
|
||||
|
||||
assert len(results) == 4
|
||||
|
||||
# Uploaded letters get their `created_at` shifted time of printing
|
||||
# 21:30 EST == 16:30 UTC
|
||||
assert results[0].created_at == upload_1.created_at.replace(hour=21, minute=30, second=0, microsecond=0)
|
||||
|
||||
# Jobs keep their original `created_at`
|
||||
assert results[1].created_at == upload_2.created_at.replace(hour=14, minute=00, second=0, microsecond=0)
|
||||
|
||||
# Still in BST here…
|
||||
assert results[2].created_at == upload_3.created_at.replace(hour=21, minute=30, second=0, microsecond=0)
|
||||
|
||||
# Now we’ve gone far enough back to be in GMT
|
||||
# 17:30 GMT == 17:30 UTC
|
||||
assert results[3].created_at == upload_4.created_at.replace(hour=21, minute=30, second=0, microsecond=0)
|
||||
|
||||
|
||||
@pytest.mark.skip(reason="Investigate what remains after removing letters")
|
||||
@freeze_time('2020-02-02 14:00')
|
||||
def test_get_uploads_is_paginated(sample_template):
|
||||
letter_template = create_uploaded_template(sample_template.service)
|
||||
|
||||
create_uploaded_letter(
|
||||
letter_template, sample_template.service, status='delivered',
|
||||
created_at=datetime.utcnow() - timedelta(minutes=3),
|
||||
)
|
||||
create_job(
|
||||
sample_template, processing_started=datetime.utcnow() - timedelta(minutes=2),
|
||||
job_status=JOB_STATUS_IN_PROGRESS,
|
||||
)
|
||||
create_uploaded_letter(
|
||||
letter_template, sample_template.service, status='delivered',
|
||||
created_at=datetime.utcnow() - timedelta(minutes=1),
|
||||
)
|
||||
create_job(
|
||||
sample_template, processing_started=datetime.utcnow(),
|
||||
job_status=JOB_STATUS_IN_PROGRESS,
|
||||
)
|
||||
|
||||
results = dao_get_uploads_by_service_id(sample_template.service_id, page=1, page_size=1)
|
||||
|
||||
assert results.per_page == 1
|
||||
assert results.total == 3
|
||||
assert len(results.items) == 1
|
||||
assert results.items[0].created_at == datetime.utcnow().replace(hour=22, minute=30, second=0, microsecond=0)
|
||||
assert results.items[0].notification_count == 2
|
||||
assert results.items[0].upload_type == 'letter_day'
|
||||
|
||||
results = dao_get_uploads_by_service_id(sample_template.service_id, page=2, page_size=1)
|
||||
|
||||
assert len(results.items) == 1
|
||||
assert results.items[0].created_at == datetime.utcnow().replace(hour=14, minute=0, second=0, microsecond=0)
|
||||
assert results.items[0].notification_count == 1
|
||||
assert results.items[0].upload_type == 'job'
|
||||
|
||||
|
||||
@pytest.mark.skip(reason="Investigate what remains after removing letters")
|
||||
def test_get_uploads_returns_empty_list(sample_service):
|
||||
items = dao_get_uploads_by_service_id(sample_service.id).items
|
||||
assert items == []
|
||||
|
||||
Reference in New Issue
Block a user