build 059.9: add websocket runtime protocols
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
# app/tests/unit/market_data/acquisition/runtime/test_websocket_protocol.py
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from src.market_data.acquisition.runtime.websocket_protocol import (
|
||||
WebSocketSessionProtocol,
|
||||
WebSocketSubscriptionManagerProtocol,
|
||||
WebSocketTransportProtocol,
|
||||
)
|
||||
|
||||
|
||||
class FakeWebSocketTransport:
|
||||
async def connect(self) -> None:
|
||||
return None
|
||||
|
||||
async def disconnect(self) -> None:
|
||||
return None
|
||||
|
||||
async def send(self, message: str | bytes) -> None:
|
||||
return None
|
||||
|
||||
async def receive(self) -> str | bytes:
|
||||
return "{}"
|
||||
|
||||
|
||||
class FakeWebSocketSession:
|
||||
@property
|
||||
def is_connected(self) -> bool:
|
||||
return True
|
||||
|
||||
async def start(self) -> None:
|
||||
return None
|
||||
|
||||
async def stop(self) -> None:
|
||||
return None
|
||||
|
||||
|
||||
class FakeWebSocketSubscriptionManager:
|
||||
async def restore_subscriptions(self) -> None:
|
||||
return None
|
||||
|
||||
async def clear_subscriptions(self) -> None:
|
||||
return None
|
||||
|
||||
|
||||
def test_transport_implementation_satisfies_protocol() -> None:
|
||||
assert isinstance(FakeWebSocketTransport(), WebSocketTransportProtocol)
|
||||
|
||||
|
||||
def test_session_implementation_satisfies_protocol() -> None:
|
||||
assert isinstance(FakeWebSocketSession(), WebSocketSessionProtocol)
|
||||
|
||||
|
||||
def test_subscription_manager_implementation_satisfies_protocol() -> None:
|
||||
assert isinstance(
|
||||
FakeWebSocketSubscriptionManager(),
|
||||
WebSocketSubscriptionManagerProtocol,
|
||||
)
|
||||
|
||||
|
||||
def test_incomplete_transport_does_not_satisfy_protocol() -> None:
|
||||
class IncompleteTransport:
|
||||
async def connect(self) -> None:
|
||||
return None
|
||||
|
||||
assert not isinstance(IncompleteTransport(), WebSocketTransportProtocol)
|
||||
Reference in New Issue
Block a user