test(time-entries): cover grouped filters and serializer formatting
This commit is contained in:
47
apps/time_entries/tests/test_services.py
Normal file
47
apps/time_entries/tests/test_services.py
Normal file
@@ -0,0 +1,47 @@
|
||||
from datetime import timedelta
|
||||
|
||||
import pytest
|
||||
from django.utils import timezone
|
||||
from rest_framework.exceptions import ValidationError
|
||||
|
||||
from apps.time_entries.services.time_entries import create_time_entry, stop_time_entry
|
||||
from apps.users.models import User
|
||||
from apps.workspaces.models import Workspace
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def workspace_owner(db):
|
||||
user = User.objects.create_user(mobile="09121111111", password="secret123")
|
||||
workspace = Workspace.objects.create(name="Core", owner=user)
|
||||
return user, workspace
|
||||
|
||||
|
||||
def test_create_time_entry_allows_only_one_running_timer_per_workspace(workspace_owner):
|
||||
user, workspace = workspace_owner
|
||||
|
||||
create_time_entry(
|
||||
user=user,
|
||||
workspace_id=workspace.id,
|
||||
start_time=timezone.now(),
|
||||
)
|
||||
|
||||
with pytest.raises(ValidationError):
|
||||
create_time_entry(
|
||||
user=user,
|
||||
workspace_id=workspace.id,
|
||||
start_time=timezone.now() + timedelta(minutes=5),
|
||||
)
|
||||
|
||||
|
||||
def test_stop_time_entry_sets_end_time_and_duration(workspace_owner):
|
||||
user, workspace = workspace_owner
|
||||
entry = create_time_entry(
|
||||
user=user,
|
||||
workspace_id=workspace.id,
|
||||
start_time=timezone.now() - timedelta(hours=1),
|
||||
)
|
||||
|
||||
stopped_entry = stop_time_entry(entry, end_time=timezone.now())
|
||||
|
||||
assert stopped_entry.end_time is not None
|
||||
assert stopped_entry.duration is not None
|
||||
Reference in New Issue
Block a user