test(time-entries): cover grouped filters and serializer formatting
This commit is contained in:
51
apps/time_entries/tests/test_views.py
Normal file
51
apps/time_entries/tests/test_views.py
Normal file
@@ -0,0 +1,51 @@
|
||||
from datetime import datetime
|
||||
|
||||
from django.utils import timezone
|
||||
from rest_framework.test import APIClient
|
||||
|
||||
from apps.time_entries.models import TimeEntry
|
||||
from apps.users.models import User
|
||||
from apps.workspaces.models import Workspace
|
||||
|
||||
|
||||
def make_aware(year, month, day, hour=9, minute=0, second=0):
|
||||
return timezone.make_aware(datetime(year, month, day, hour, minute, second), timezone.get_current_timezone())
|
||||
|
||||
|
||||
def test_time_entry_list_returns_grouped_payload_for_ended_entries(db):
|
||||
user = User.objects.create_user(mobile="09126666666", password="secret123")
|
||||
workspace = Workspace.objects.create(name="Core", owner=user)
|
||||
|
||||
first_entry = TimeEntry.objects.create(
|
||||
workspace=workspace,
|
||||
user=user,
|
||||
description="Morning work",
|
||||
start_time=make_aware(2026, 4, 24, 9, 0, 0),
|
||||
end_time=make_aware(2026, 4, 24, 10, 30, 0),
|
||||
)
|
||||
TimeEntry.objects.create(
|
||||
workspace=workspace,
|
||||
user=user,
|
||||
description="Running work",
|
||||
start_time=make_aware(2026, 4, 24, 11, 0, 0),
|
||||
)
|
||||
|
||||
client = APIClient()
|
||||
client.force_authenticate(user=user)
|
||||
|
||||
response = client.get(
|
||||
"/api/time-entries/",
|
||||
{
|
||||
"workspace": str(workspace.id),
|
||||
"status": "ended",
|
||||
"limit": 10,
|
||||
"offset": 0,
|
||||
},
|
||||
)
|
||||
|
||||
assert response.status_code == 200
|
||||
assert response.data["current_page_items_count"] == 1
|
||||
assert response.data["has_more"] is False
|
||||
assert len(response.data["groups"]) == 1
|
||||
assert len(response.data["groups"][0]["days"]) == 1
|
||||
assert response.data["groups"][0]["days"][0]["entries"][0]["id"] == str(first_entry.id)
|
||||
Reference in New Issue
Block a user