mirror of
https://github.com/GSA/notifications-api.git
synced 2025-12-20 15:31:15 -05:00
base job start of processing_started rather than created_at
otherwise scheduled jobs will be viewed as old, and we'll pull stats from the statistics tables, even if they might have not even started yet
This commit is contained in:
@@ -173,8 +173,12 @@ def get_paginated_jobs(service_id, limit_days, statuses, page):
|
|||||||
)
|
)
|
||||||
data = job_schema.dump(pagination.items, many=True).data
|
data = job_schema.dump(pagination.items, many=True).data
|
||||||
for job_data in data:
|
for job_data in data:
|
||||||
created_at = dateutil.parser.parse(job_data['created_at']).replace(tzinfo=None)
|
start = job_data['processing_started']
|
||||||
if created_at < midnight_n_days_ago(3):
|
start = dateutil.parser.parse(start).replace(tzinfo=None) if start else None
|
||||||
|
|
||||||
|
if start is None:
|
||||||
|
statistics = []
|
||||||
|
elif start.replace(tzinfo=None) < midnight_n_days_ago(3):
|
||||||
# ft_notification_status table
|
# ft_notification_status table
|
||||||
statistics = fetch_notification_statuses_for_job(job_data['id'])
|
statistics = fetch_notification_statuses_for_job(job_data['id'])
|
||||||
else:
|
else:
|
||||||
|
|||||||
@@ -574,8 +574,8 @@ def test_get_jobs_with_limit_days(admin_request, sample_template):
|
|||||||
def test_get_jobs_should_return_statistics(admin_request, sample_template):
|
def test_get_jobs_should_return_statistics(admin_request, sample_template):
|
||||||
now = datetime.utcnow()
|
now = datetime.utcnow()
|
||||||
earlier = datetime.utcnow() - timedelta(days=1)
|
earlier = datetime.utcnow() - timedelta(days=1)
|
||||||
job_1 = create_job(sample_template, created_at=earlier)
|
job_1 = create_job(sample_template, processing_started=earlier)
|
||||||
job_2 = create_job(sample_template, created_at=now)
|
job_2 = create_job(sample_template, processing_started=now)
|
||||||
create_notification(job=job_1, status='created')
|
create_notification(job=job_1, status='created')
|
||||||
create_notification(job=job_1, status='created')
|
create_notification(job=job_1, status='created')
|
||||||
create_notification(job=job_1, status='created')
|
create_notification(job=job_1, status='created')
|
||||||
@@ -698,8 +698,10 @@ def test_get_jobs_should_retrieve_from_ft_notification_status_for_old_jobs(admin
|
|||||||
just_three_days_ago = datetime(2017, 6, 6, 22, 59, 59)
|
just_three_days_ago = datetime(2017, 6, 6, 22, 59, 59)
|
||||||
not_quite_three_days_ago = just_three_days_ago + timedelta(seconds=1)
|
not_quite_three_days_ago = just_three_days_ago + timedelta(seconds=1)
|
||||||
|
|
||||||
job_1 = create_job(sample_template, created_at=just_three_days_ago)
|
job_1 = create_job(sample_template, created_at=just_three_days_ago, processing_started=just_three_days_ago)
|
||||||
job_2 = create_job(sample_template, created_at=not_quite_three_days_ago)
|
job_2 = create_job(sample_template, created_at=just_three_days_ago, processing_started=not_quite_three_days_ago)
|
||||||
|
# is old but hasn't started yet (probably a scheduled job). We don't have any stats for this job yet.
|
||||||
|
job_3 = create_job(sample_template, created_at=just_three_days_ago, processing_started=None)
|
||||||
|
|
||||||
# some notifications created more than three days ago, some created after the midnight cutoff
|
# some notifications created more than three days ago, some created after the midnight cutoff
|
||||||
create_ft_notification_status(date(2017, 6, 6), job=job_1, notification_status='delivered', count=2)
|
create_ft_notification_status(date(2017, 6, 6), job=job_1, notification_status='delivered', count=2)
|
||||||
@@ -709,13 +711,17 @@ def test_get_jobs_should_retrieve_from_ft_notification_status_for_old_jobs(admin
|
|||||||
|
|
||||||
# this isn't picked up because the job is too new
|
# this isn't picked up because the job is too new
|
||||||
create_ft_notification_status(date(2017, 6, 7), job=job_2, notification_status='delivered', count=8)
|
create_ft_notification_status(date(2017, 6, 7), job=job_2, notification_status='delivered', count=8)
|
||||||
|
# this isn't picked up - while the job is old, it started in last 3 days so we look at notification table instead
|
||||||
|
create_ft_notification_status(date(2017, 6, 7), job=job_3, notification_status='delivered', count=16)
|
||||||
|
|
||||||
# this isn't picked up because we're using the ft status table for job_1 as it's old
|
# this isn't picked up because we're using the ft status table for job_1 as it's old
|
||||||
create_notification(job=job_1, status='created', created_at=not_quite_three_days_ago)
|
create_notification(job=job_1, status='created', created_at=not_quite_three_days_ago)
|
||||||
|
|
||||||
resp_json = admin_request.get('job.get_jobs_by_service', service_id=sample_template.service_id)
|
resp_json = admin_request.get('job.get_jobs_by_service', service_id=sample_template.service_id)
|
||||||
|
|
||||||
assert resp_json['data'][0]['id'] == str(job_2.id)
|
assert resp_json['data'][0]['id'] == str(job_3.id)
|
||||||
assert resp_json['data'][0]['statistics'] == [{'status': 'created', 'count': 1}]
|
assert resp_json['data'][0]['statistics'] == []
|
||||||
assert resp_json['data'][1]['id'] == str(job_1.id)
|
assert resp_json['data'][1]['id'] == str(job_2.id)
|
||||||
assert resp_json['data'][1]['statistics'] == [{'status': 'delivered', 'count': 6}]
|
assert resp_json['data'][1]['statistics'] == [{'status': 'created', 'count': 1}]
|
||||||
|
assert resp_json['data'][2]['id'] == str(job_1.id)
|
||||||
|
assert resp_json['data'][2]['statistics'] == [{'status': 'delivered', 'count': 6}]
|
||||||
|
|||||||
Reference in New Issue
Block a user