import 'package:halkyon_learn_flutter/src/feature/assistant/data/assistant_gateway.dart'; import 'package:halkyon_learn_flutter/src/feature/assistant/model/connected_assistant.dart'; /// An instance offering the connector at [url] (none when null), with /// [initially] connected; [unreachable] makes every call fail as offline. class FakeAssistantGateway({ /// Where the connector is; none when null. final String? url = 'https://learn.example.org/mcp', /// The assistants connected at first. final List initially = const [], }) implements AssistantGateway { /// Whether the instance can't be reached, failing every call while set. bool unreachable = false; /// The assistants connected. late final List connected = [...initially]; /// The codes given out, the last one valid. final codes = []; void _reach() { if (unreachable) { throw Exception('offline'); } } @override Future connectorUrl() async { _reach(); return url; } @override Future connectCode() async { _reach(); final code = 'K7QX-M2P${codes.length}'; codes.add(code); return (code: code, expiresAt: DateTime.utc(2026, 10, 10, 12, 10)); } @override Future> connections() async { _reach(); return [...connected]; } @override Future disconnect(int id) async { _reach(); connected.removeWhere((assistant) => assistant.id == id); } }