mirror of
https://github.com/bookwyrm-social/bookwyrm.git
synced 2024-11-27 03:51:08 +00:00
Adds tests for recent import average time
This commit is contained in:
parent
f0d3ceefa0
commit
f80e2465ed
2 changed files with 46 additions and 9 deletions
|
@ -1,4 +1,5 @@
|
|||
""" test for app action functionality """
|
||||
import datetime
|
||||
import pathlib
|
||||
from unittest.mock import patch
|
||||
|
||||
|
@ -106,3 +107,45 @@ class ImportViews(TestCase):
|
|||
with patch("bookwyrm.models.import_job.import_item_task.delay") as mock:
|
||||
views.retry_item(request, job.id, item.id)
|
||||
self.assertEqual(mock.call_count, 1)
|
||||
|
||||
def test_get_average_import_time_no_imports(self):
|
||||
"""Give people a sense of the timing"""
|
||||
result = views.imports.import_data.get_average_import_time()
|
||||
self.assertIsNone(result)
|
||||
|
||||
def test_get_average_import_time_no_imports_this_week(self):
|
||||
"""Give people a sense of the timing"""
|
||||
models.ImportJob.objects.create(
|
||||
user=self.local_user,
|
||||
created_date=datetime.datetime(2000, 1, 1),
|
||||
updated_date=datetime.datetime(2001, 1, 1),
|
||||
status="complete",
|
||||
complete=True,
|
||||
mappings={},
|
||||
)
|
||||
result = views.imports.import_data.get_average_import_time()
|
||||
self.assertIsNone(result)
|
||||
|
||||
def test_get_average_import_time_with_data(self):
|
||||
"""Now, with data"""
|
||||
now = datetime.datetime.now()
|
||||
two_hours_ago = now - datetime.timedelta(hours=2)
|
||||
four_hours_ago = now - datetime.timedelta(hours=4)
|
||||
models.ImportJob.objects.create(
|
||||
user=self.local_user,
|
||||
created_date=two_hours_ago,
|
||||
updated_date=now,
|
||||
status="complete",
|
||||
complete=True,
|
||||
mappings={},
|
||||
)
|
||||
models.ImportJob.objects.create(
|
||||
user=self.local_user,
|
||||
created_date=four_hours_ago,
|
||||
updated_date=now,
|
||||
status="complete",
|
||||
complete=True,
|
||||
mappings={},
|
||||
)
|
||||
result = views.imports.import_data.get_average_import_time()
|
||||
self.assertEqual(result, 3 * 60 * 60)
|
||||
|
|
|
@ -44,11 +44,7 @@ class Import(View):
|
|||
),
|
||||
}
|
||||
|
||||
seconds = get_or_set(
|
||||
"avg-import-time",
|
||||
get_average_import_time,
|
||||
timeout=86400
|
||||
)
|
||||
seconds = get_or_set("avg-import-time", get_average_import_time, timeout=86400)
|
||||
if seconds > 60**2:
|
||||
data["recent_avg_hours"] = seconds / (60**2)
|
||||
elif seconds:
|
||||
|
@ -98,9 +94,7 @@ def get_average_import_time() -> float:
|
|||
"""Helper to figure out how long imports are taking (returns seconds)"""
|
||||
last_week = timezone.now() - datetime.timedelta(days=7)
|
||||
recent_avg = (
|
||||
models.ImportJob.objects.filter(
|
||||
created_date__gte=last_week, status="complete"
|
||||
)
|
||||
models.ImportJob.objects.filter(created_date__gte=last_week, status="complete")
|
||||
.annotate(
|
||||
runtime=ExpressionWrapper(
|
||||
F("updated_date") - F("created_date"),
|
||||
|
@ -113,4 +107,4 @@ def get_average_import_time() -> float:
|
|||
|
||||
if recent_avg:
|
||||
return recent_avg.total_seconds()
|
||||
return None
|
||||
return None
|
||||
|
|
Loading…
Reference in a new issue