Files
plezy/test/test_helpers/multi_server_fixtures.dart
T
edde746 61344f7862 test: extract shared fixtures and scaffolds
Collapse duplicated setup across the suite into six shared helpers under
test/test_helpers/ and rewrite the 28 suites that were open-coding it:

  http_fixtures.dart         jsonResponse() for http.Response JSON stubs
  library_tab_scaffold.dart  pumps library tabs under their required ancestors
  multi_server_fixtures.dart MultiServerProvider wiring for widget tests
  playback_report_fakes.dart PlaybackReportCall + fake report sinks
  profile_stack.dart         production-shaped profile dependency graph
  theme.dart                 testMonoTokens for fast-settling widget tests

Net -1245 lines with no change in coverage or assertions.
2026-07-26 06:09:47 +02:00

31 lines
1.3 KiB
Dart

import 'package:flutter_test/flutter_test.dart';
import 'package:plezy/media/media_server_client.dart';
import 'package:plezy/providers/multi_server_provider.dart';
import 'package:plezy/services/data_aggregation_service.dart';
import 'package:plezy/services/multi_server_manager.dart';
/// Wires [manager] into the provider widget tests read servers from. The caller
/// owns disposal of the returned provider.
MultiServerProvider testMultiServerProvider(MultiServerManager manager) {
return MultiServerProvider(manager, DataAggregationService(manager));
}
/// Registers [clients] on a fresh manager and returns it with its provider,
/// disposing both when the test ends. Clients also named in [offline] are
/// registered as unreachable; [clients] fixes the registration order.
({MultiServerManager manager, MultiServerProvider provider}) testMultiServer({
List<MediaServerClient> clients = const [],
List<MediaServerClient> offline = const [],
}) {
final manager = MultiServerManager();
for (final client in clients) {
manager.debugRegisterClientForTesting(client, online: !offline.contains(client));
}
final provider = testMultiServerProvider(manager);
addTearDown(() {
provider.dispose();
manager.dispose();
});
return (manager: manager, provider: provider);
}