test(reports): freeze date-sensitive report view cases

This commit is contained in:
2026-05-01 01:54:13 +03:30
parent fb15a16204
commit df9a183823

View File

@@ -89,10 +89,14 @@ class ReportViewTests(APITestCase):
def test_member_only_sees_own_chart_report(self): def test_member_only_sees_own_chart_report(self):
self.client.force_authenticate(user=self.member) self.client.force_authenticate(user=self.member)
response = self.client.get( with patch(
"/api/reports/chart/", "apps.reports.services.aggregation.timezone.localdate",
{"workspace": str(self.workspace.id), "period": "this_month"}, return_value=date(2026, 4, 20),
) ):
response = self.client.get(
"/api/reports/chart/",
{"workspace": str(self.workspace.id), "period": "this_month"},
)
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
self.assertEqual(response.data["summary"]["total_duration"], "01:00:00") self.assertEqual(response.data["summary"]["total_duration"], "01:00:00")
@@ -100,10 +104,14 @@ class ReportViewTests(APITestCase):
def test_admin_can_request_combined_table_report(self): def test_admin_can_request_combined_table_report(self):
self.client.force_authenticate(user=self.admin) self.client.force_authenticate(user=self.admin)
response = self.client.get( with patch(
"/api/reports/table/", "apps.reports.services.aggregation.timezone.localdate",
{"workspace": str(self.workspace.id), "period": "this_month"}, return_value=date(2026, 4, 20),
) ):
response = self.client.get(
"/api/reports/table/",
{"workspace": str(self.workspace.id), "period": "this_month"},
)
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
self.assertEqual(response.data["summary"]["total_duration"], "03:00:00") self.assertEqual(response.data["summary"]["total_duration"], "03:00:00")
@@ -139,14 +147,18 @@ class ReportViewTests(APITestCase):
currency="USD", currency="USD",
) )
response = self.client.get( with patch(
"/api/reports/table/", "apps.reports.services.aggregation.timezone.localdate",
{ return_value=date(2026, 4, 20),
"workspace": str(self.workspace.id), ):
"period": "this_month", response = self.client.get(
"user": str(self.owner.id), "/api/reports/table/",
}, {
) "workspace": str(self.workspace.id),
"period": "this_month",
"user": str(self.owner.id),
},
)
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
target_day = next(day for day in response.data["days"] if day["date"] == "2026-04-15") target_day = next(day for day in response.data["days"] if day["date"] == "2026-04-15")
@@ -218,14 +230,22 @@ class ReportViewTests(APITestCase):
url = "/api/reports/table/" url = "/api/reports/table/"
params = {"workspace": str(self.workspace.id), "period": "this_month"} params = {"workspace": str(self.workspace.id), "period": "this_month"}
first_response = self.client.get(url, params) with patch(
"apps.reports.services.aggregation.timezone.localdate",
return_value=date(2026, 4, 20),
):
first_response = self.client.get(url, params)
self.assertEqual(first_response.status_code, 200) self.assertEqual(first_response.status_code, 200)
self.assertEqual(first_response.data["summary"]["total_duration"], "03:00:00") self.assertEqual(first_response.data["summary"]["total_duration"], "03:00:00")
member_entry = TimeEntry.objects.get(description="Member work") member_entry = TimeEntry.objects.get(description="Member work")
TimeEntry.objects.filter(id=member_entry.id).update(duration=timedelta(hours=5)) TimeEntry.objects.filter(id=member_entry.id).update(duration=timedelta(hours=5))
cached_response = self.client.get(url, params) with patch(
"apps.reports.services.aggregation.timezone.localdate",
return_value=date(2026, 4, 20),
):
cached_response = self.client.get(url, params)
self.assertEqual(cached_response.status_code, 200) self.assertEqual(cached_response.status_code, 200)
self.assertEqual(cached_response.data["summary"]["total_duration"], "03:00:00") self.assertEqual(cached_response.data["summary"]["total_duration"], "03:00:00")
@@ -233,6 +253,10 @@ class ReportViewTests(APITestCase):
member_entry.description = "Member work updated" member_entry.description = "Member work updated"
member_entry.save(update_fields=["description"]) member_entry.save(update_fields=["description"])
fresh_response = self.client.get(url, params) with patch(
"apps.reports.services.aggregation.timezone.localdate",
return_value=date(2026, 4, 20),
):
fresh_response = self.client.get(url, params)
self.assertEqual(fresh_response.status_code, 200) self.assertEqual(fresh_response.status_code, 200)
self.assertEqual(fresh_response.data["summary"]["total_duration"], "07:00:00") self.assertEqual(fresh_response.data["summary"]["total_duration"], "07:00:00")