fix(timezone): fix timer clock-skew
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
from datetime import datetime
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
from django.utils import timezone
|
||||
from rest_framework.test import APITestCase
|
||||
@@ -40,6 +40,9 @@ class TimeEntryViewTests(APITestCase):
|
||||
self.assertIsNone(entry.end_time)
|
||||
self.assertGreaterEqual(entry.start_time, before)
|
||||
self.assertLessEqual(entry.start_time, after)
|
||||
self.assertIsInstance(response.data["start_time_ms"], int)
|
||||
self.assertIsNone(response.data["end_time_ms"])
|
||||
self.assertIsInstance(response.data["server_now_ms"], int)
|
||||
|
||||
def test_time_entry_list_returns_grouped_payload_for_ended_entries(self):
|
||||
user = User.objects.create_user(mobile="09126666666", password="secret123")
|
||||
@@ -72,6 +75,8 @@ class TimeEntryViewTests(APITestCase):
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertEqual(response.data["current_page_items_count"], 1)
|
||||
self.assertIsInstance(response.data["server_now_ms"], int)
|
||||
self.assertIn("server_now", response.data)
|
||||
self.assertFalse(response.data["has_more"])
|
||||
self.assertEqual(len(response.data["groups"]), 1)
|
||||
self.assertEqual(len(response.data["groups"][0]["days"]), 1)
|
||||
@@ -79,6 +84,41 @@ class TimeEntryViewTests(APITestCase):
|
||||
response.data["groups"][0]["days"][0]["entries"][0]["id"],
|
||||
str(first_entry.id),
|
||||
)
|
||||
entry_payload = response.data["groups"][0]["days"][0]["entries"][0]
|
||||
self.assertIsInstance(entry_payload["start_time_ms"], int)
|
||||
self.assertIsInstance(entry_payload["end_time_ms"], int)
|
||||
self.assertIsInstance(entry_payload["server_now_ms"], int)
|
||||
|
||||
def test_debug_time_returns_server_clock_payload(self):
|
||||
user = User.objects.create_user(mobile="09126666667", password="secret123")
|
||||
self.client.force_authenticate(user=user)
|
||||
|
||||
response = self.client.get("/api/time-entries/debug-time/")
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertIsInstance(response.data["server_now_ms"], int)
|
||||
self.assertIn("server_now", response.data)
|
||||
|
||||
def test_stop_running_time_entry_returns_server_epoch_fields(self):
|
||||
user = User.objects.create_user(mobile="09126666668", password="secret123")
|
||||
workspace = Workspace.objects.create(name="Core", owner=user)
|
||||
entry = TimeEntry.objects.create(
|
||||
workspace=workspace,
|
||||
user=user,
|
||||
description="Running work",
|
||||
start_time=timezone.now() - timedelta(seconds=5),
|
||||
)
|
||||
|
||||
self.client.force_authenticate(user=user)
|
||||
response = self.client.post(f"/api/time-entries/{entry.id}/stop/", {}, format="json")
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertIsInstance(response.data["start_time_ms"], int)
|
||||
self.assertIsInstance(response.data["end_time_ms"], int)
|
||||
self.assertIsInstance(response.data["server_now_ms"], int)
|
||||
entry.refresh_from_db()
|
||||
self.assertIsNotNone(entry.duration)
|
||||
self.assertGreaterEqual(entry.duration.total_seconds(), 5)
|
||||
|
||||
def test_time_entry_update_preserves_current_deleted_tags(self):
|
||||
user = User.objects.create_user(mobile="09127777777", password="secret123")
|
||||
|
||||
Reference in New Issue
Block a user