fix: hide inactive devices usage summary

This commit is contained in:
3252a8
2026-05-29 23:23:55 +03:00
parent 7e7a2e58a2
commit 923ff9b208
7 changed files with 178 additions and 50 deletions
+50 -1
View File
@@ -1,8 +1,11 @@
import json
from datetime import datetime, timezone
from types import SimpleNamespace
from unittest import IsolatedAsyncioTestCase
from unittest.mock import AsyncMock
import bot.app.web.subscription_webapp # noqa: F401
from bot.app.web.webapp.devices import _serialize_device
from bot.app.web.webapp.devices import _load_devices_payload, _serialize_device
def test_device_serializer_accepts_datetime_created_at():
@@ -20,3 +23,49 @@ def test_device_serializer_accepts_datetime_created_at():
assert payload["created_at"] == created_at.isoformat()
assert payload["created_at_text"] == "02.01.2099 03:04"
json.dumps(payload)
class WebAppDevicesPayloadTests(IsolatedAsyncioTestCase):
async def test_load_devices_payload_returns_empty_payload_without_subscription(self):
panel_service = SimpleNamespace(get_user_devices=AsyncMock())
subscription_service = SimpleNamespace(
get_active_subscription_details=AsyncMock(return_value=None),
panel_service=panel_service,
)
payload = await _load_devices_payload(subscription_service, AsyncMock(), 42)
self.assertTrue(payload["ok"])
self.assertFalse(payload["payload"]["subscription_active"])
self.assertEqual(payload["payload"]["current_devices"], 0)
self.assertEqual(payload["payload"]["devices"], [])
panel_service.get_user_devices.assert_not_awaited()
async def test_load_devices_payload_uses_fallback_panel_uuid_for_inactive_devices(self):
panel_service = SimpleNamespace(
get_user_devices=AsyncMock(
return_value=[
{
"hwid": "abcdef123456",
"deviceModel": "Laptop",
}
]
)
)
subscription_service = SimpleNamespace(
get_active_subscription_details=AsyncMock(return_value=None),
panel_service=panel_service,
)
payload = await _load_devices_payload(
subscription_service,
AsyncMock(),
42,
fallback_panel_user_uuid="panel-user",
)
self.assertTrue(payload["ok"])
self.assertFalse(payload["payload"]["subscription_active"])
self.assertEqual(payload["payload"]["current_devices"], 1)
self.assertEqual(payload["payload"]["devices"][0]["display_name"], "Laptop")
panel_service.get_user_devices.assert_awaited_once_with("panel-user")