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.
This commit is contained in:
@@ -4,28 +4,10 @@ import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:plezy/i18n/strings.g.dart';
|
||||
import 'package:plezy/media/media_source_info.dart';
|
||||
import 'package:plezy/mpv/mpv.dart';
|
||||
import 'package:plezy/theme/mono_tokens.dart';
|
||||
import 'package:plezy/widgets/overlay_sheet.dart';
|
||||
import 'package:plezy/widgets/video_controls/sheets/chapter_sheet.dart';
|
||||
|
||||
const _tokens = MonoTokens(
|
||||
radiusSm: 8,
|
||||
radiusMd: 12,
|
||||
radiusLg: 20,
|
||||
radiusXs: 5,
|
||||
groupGap: 2,
|
||||
space: 8,
|
||||
fast: Duration(milliseconds: 1),
|
||||
normal: Duration(milliseconds: 1),
|
||||
slow: Duration(milliseconds: 1),
|
||||
expressive: Duration(milliseconds: 1),
|
||||
bg: Colors.black,
|
||||
surface: Colors.black,
|
||||
outline: Colors.white24,
|
||||
text: Colors.white,
|
||||
textMuted: Colors.white70,
|
||||
splashFactory: NoSplash.splashFactory,
|
||||
);
|
||||
import '../test_helpers/theme.dart';
|
||||
|
||||
void main() {
|
||||
setUp(() => LocaleSettings.setLocaleSync(AppLocale.en));
|
||||
@@ -64,7 +46,7 @@ Future<void> _pumpSheet(
|
||||
}) async {
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
theme: ThemeData(extensions: const [_tokens]),
|
||||
theme: ThemeData(extensions: const [testMonoTokens]),
|
||||
home: OverlaySheetHost(
|
||||
child: Scaffold(
|
||||
body: Builder(
|
||||
|
||||
@@ -9,7 +9,6 @@ import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:http/http.dart' as http;
|
||||
import 'package:http/testing.dart';
|
||||
import 'package:plezy/connection/connection.dart';
|
||||
import 'package:plezy/connection/connection_registry.dart';
|
||||
import 'package:plezy/database/app_database.dart';
|
||||
import 'package:plezy/i18n/strings.g.dart';
|
||||
import 'package:plezy/navigation/profile_navigation_scope.dart';
|
||||
@@ -26,9 +25,6 @@ import 'package:plezy/models/plex/plex_home_user.dart';
|
||||
import 'package:plezy/models/plex/plex_config.dart';
|
||||
import 'package:plezy/profiles/profile.dart';
|
||||
import 'package:plezy/profiles/active_profile_provider.dart';
|
||||
import 'package:plezy/profiles/plex_home_service.dart';
|
||||
import 'package:plezy/profiles/profile_connection_registry.dart';
|
||||
import 'package:plezy/profiles/profile_registry.dart';
|
||||
import 'package:plezy/providers/download_provider.dart';
|
||||
import 'package:plezy/providers/multi_server_provider.dart';
|
||||
import 'package:plezy/providers/playback_state_provider.dart';
|
||||
@@ -51,6 +47,7 @@ import 'package:provider/provider.dart';
|
||||
import '../test_helpers/backend_client_fixtures.dart';
|
||||
import '../test_helpers/media_items.dart';
|
||||
import '../test_helpers/prefs.dart';
|
||||
import '../test_helpers/profile_stack.dart';
|
||||
|
||||
void main() {
|
||||
TestWidgetsFlutterBinding.ensureInitialized();
|
||||
@@ -126,28 +123,14 @@ void main() {
|
||||
];
|
||||
final client = _AudioPlaylistClient(tracks);
|
||||
final music = _RecordingMusicPlaybackService();
|
||||
final db = AppDatabase.forTesting(NativeDatabase.memory());
|
||||
final manager = MultiServerManager()..debugRegisterClientForTesting(client);
|
||||
final multiServerProvider = MultiServerProvider(manager, DataAggregationService(manager));
|
||||
final connections = ConnectionRegistry(db);
|
||||
final profileConnections = ProfileConnectionRegistry(db);
|
||||
final plexHome = PlexHomeService(
|
||||
connections: connections,
|
||||
profileConnections: profileConnections,
|
||||
plexHomeUserFetcher: (_) async => const [],
|
||||
);
|
||||
final activeProfileProvider = ActiveProfileProvider(
|
||||
registry: ProfileRegistry(db),
|
||||
plexHome: plexHome,
|
||||
connections: connections,
|
||||
);
|
||||
final stack = await ProfileStack.create(withStorage: false);
|
||||
addTearDown(() async {
|
||||
activeProfileProvider.dispose();
|
||||
await plexHome.dispose();
|
||||
await stack.dispose();
|
||||
music.dispose();
|
||||
multiServerProvider.dispose();
|
||||
manager.dispose();
|
||||
await db.close();
|
||||
});
|
||||
|
||||
final menuKey = GlobalKey<MediaContextMenuState>();
|
||||
@@ -164,7 +147,7 @@ void main() {
|
||||
child: MultiProvider(
|
||||
providers: [
|
||||
ChangeNotifierProvider<MultiServerProvider>.value(value: multiServerProvider),
|
||||
ChangeNotifierProvider<ActiveProfileProvider>.value(value: activeProfileProvider),
|
||||
ChangeNotifierProvider<ActiveProfileProvider>.value(value: stack.active),
|
||||
ChangeNotifierProvider<MusicPlaybackService>.value(value: music),
|
||||
],
|
||||
child: MaterialApp(
|
||||
@@ -244,28 +227,14 @@ void main() {
|
||||
),
|
||||
])..blockWithAbort = true;
|
||||
final playback = PlaybackStateProvider();
|
||||
final db = AppDatabase.forTesting(NativeDatabase.memory());
|
||||
final manager = MultiServerManager()..debugRegisterClientForTesting(client);
|
||||
final multiServerProvider = MultiServerProvider(manager, DataAggregationService(manager));
|
||||
final connections = ConnectionRegistry(db);
|
||||
final profileConnections = ProfileConnectionRegistry(db);
|
||||
final plexHome = PlexHomeService(
|
||||
connections: connections,
|
||||
profileConnections: profileConnections,
|
||||
plexHomeUserFetcher: (_) async => const [],
|
||||
);
|
||||
final activeProfileProvider = ActiveProfileProvider(
|
||||
registry: ProfileRegistry(db),
|
||||
plexHome: plexHome,
|
||||
connections: connections,
|
||||
);
|
||||
final stack = await ProfileStack.create(withStorage: false);
|
||||
addTearDown(() async {
|
||||
playback.dispose();
|
||||
activeProfileProvider.dispose();
|
||||
await plexHome.dispose();
|
||||
await stack.dispose();
|
||||
multiServerProvider.dispose();
|
||||
manager.dispose();
|
||||
await db.close();
|
||||
});
|
||||
|
||||
final menuKey = GlobalKey<MediaContextMenuState>();
|
||||
@@ -281,7 +250,7 @@ void main() {
|
||||
child: MultiProvider(
|
||||
providers: [
|
||||
ChangeNotifierProvider<MultiServerProvider>.value(value: multiServerProvider),
|
||||
ChangeNotifierProvider<ActiveProfileProvider>.value(value: activeProfileProvider),
|
||||
ChangeNotifierProvider<ActiveProfileProvider>.value(value: stack.active),
|
||||
ChangeNotifierProvider<PlaybackStateProvider>.value(value: playback),
|
||||
],
|
||||
child: MaterialApp(
|
||||
@@ -323,27 +292,13 @@ void main() {
|
||||
TvDetectionService.debugSetAppleTVOverride(true);
|
||||
addTearDown(() => TvDetectionService.debugSetAppleTVOverride(null));
|
||||
|
||||
final db = AppDatabase.forTesting(NativeDatabase.memory());
|
||||
final manager = MultiServerManager();
|
||||
final multiServerProvider = MultiServerProvider(manager, DataAggregationService(manager));
|
||||
final connections = ConnectionRegistry(db);
|
||||
final profileConnections = ProfileConnectionRegistry(db);
|
||||
final plexHome = PlexHomeService(
|
||||
connections: connections,
|
||||
profileConnections: profileConnections,
|
||||
plexHomeUserFetcher: (_) async => const [],
|
||||
);
|
||||
final activeProfileProvider = ActiveProfileProvider(
|
||||
registry: ProfileRegistry(db),
|
||||
plexHome: plexHome,
|
||||
connections: connections,
|
||||
);
|
||||
final stack = await ProfileStack.create(withStorage: false);
|
||||
addTearDown(() async {
|
||||
activeProfileProvider.dispose();
|
||||
await plexHome.dispose();
|
||||
await stack.dispose();
|
||||
multiServerProvider.dispose();
|
||||
manager.dispose();
|
||||
await db.close();
|
||||
});
|
||||
|
||||
final menuKey = GlobalKey<MediaContextMenuState>();
|
||||
@@ -360,7 +315,7 @@ void main() {
|
||||
child: MultiProvider(
|
||||
providers: [
|
||||
ChangeNotifierProvider<MultiServerProvider>.value(value: multiServerProvider),
|
||||
ChangeNotifierProvider<ActiveProfileProvider>.value(value: activeProfileProvider),
|
||||
ChangeNotifierProvider<ActiveProfileProvider>.value(value: stack.active),
|
||||
],
|
||||
child: MaterialApp(
|
||||
theme: monoTheme(dark: true),
|
||||
@@ -615,21 +570,9 @@ Future<GlobalKey<MediaContextMenuState>> _pumpPlexMovieMenu(
|
||||
);
|
||||
final manager = MultiServerManager()..debugRegisterClientForTesting(client);
|
||||
final multiServerProvider = MultiServerProvider(manager, DataAggregationService(manager));
|
||||
final connections = ConnectionRegistry(db);
|
||||
final profileConnections = ProfileConnectionRegistry(db);
|
||||
final plexHome = PlexHomeService(
|
||||
connections: connections,
|
||||
profileConnections: profileConnections,
|
||||
plexHomeUserFetcher: (_) async => const [],
|
||||
);
|
||||
final activeProfileProvider = ActiveProfileProvider(
|
||||
registry: ProfileRegistry(db),
|
||||
plexHome: plexHome,
|
||||
connections: connections,
|
||||
);
|
||||
final stack = await ProfileStack.create(db: db, withStorage: false);
|
||||
addTearDown(() async {
|
||||
activeProfileProvider.dispose();
|
||||
await plexHome.dispose();
|
||||
await stack.dispose();
|
||||
multiServerProvider.dispose();
|
||||
manager.dispose();
|
||||
await db.close();
|
||||
@@ -648,7 +591,7 @@ Future<GlobalKey<MediaContextMenuState>> _pumpPlexMovieMenu(
|
||||
child: MultiProvider(
|
||||
providers: [
|
||||
ChangeNotifierProvider<MultiServerProvider>.value(value: multiServerProvider),
|
||||
ChangeNotifierProvider<ActiveProfileProvider>.value(value: activeProfileProvider),
|
||||
ChangeNotifierProvider<ActiveProfileProvider>.value(value: stack.active),
|
||||
],
|
||||
child: MaterialApp(
|
||||
theme: monoTheme(dark: true),
|
||||
@@ -829,18 +772,7 @@ Future<_SiblingMusicMenuHarness> _pumpSiblingMusicMenu(
|
||||
final client = _RelatedMusicClient(relatedItems);
|
||||
final manager = MultiServerManager()..debugRegisterClientForTesting(client);
|
||||
final multiServerProvider = MultiServerProvider(manager, DataAggregationService(manager));
|
||||
final connections = ConnectionRegistry(db);
|
||||
final profileConnections = ProfileConnectionRegistry(db);
|
||||
final plexHome = PlexHomeService(
|
||||
connections: connections,
|
||||
profileConnections: profileConnections,
|
||||
plexHomeUserFetcher: (_) async => const [],
|
||||
);
|
||||
final activeProfileProvider = ActiveProfileProvider(
|
||||
registry: ProfileRegistry(db),
|
||||
plexHome: plexHome,
|
||||
connections: connections,
|
||||
);
|
||||
final stack = await ProfileStack.create(db: db, withStorage: false);
|
||||
final music = _RecordingMusicPlaybackService();
|
||||
final rootNavigatorKey = GlobalKey<NavigatorState>();
|
||||
final profileNavigatorKey = GlobalKey<NavigatorState>();
|
||||
@@ -849,8 +781,7 @@ Future<_SiblingMusicMenuHarness> _pumpSiblingMusicMenu(
|
||||
addTearDown(() async {
|
||||
downloadProvider.dispose();
|
||||
downloadManager.dispose();
|
||||
activeProfileProvider.dispose();
|
||||
await plexHome.dispose();
|
||||
await stack.dispose();
|
||||
music.dispose();
|
||||
multiServerProvider.dispose();
|
||||
manager.dispose();
|
||||
@@ -866,7 +797,7 @@ Future<_SiblingMusicMenuHarness> _pumpSiblingMusicMenu(
|
||||
providers: [
|
||||
ChangeNotifierProvider<MultiServerProvider>.value(value: multiServerProvider),
|
||||
ChangeNotifierProvider<DownloadProvider>.value(value: downloadProvider),
|
||||
ChangeNotifierProvider<ActiveProfileProvider>.value(value: activeProfileProvider),
|
||||
ChangeNotifierProvider<ActiveProfileProvider>.value(value: stack.active),
|
||||
ChangeNotifierProvider<MusicPlaybackService>.value(value: music),
|
||||
],
|
||||
child: ProfileNavigationScope(
|
||||
|
||||
@@ -1,12 +1,9 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:drift/native.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:material_symbols_icons/symbols.dart';
|
||||
import 'package:plezy/connection/connection_registry.dart';
|
||||
import 'package:plezy/database/app_database.dart';
|
||||
import 'package:plezy/focus/focusable_action_bar.dart';
|
||||
import 'package:plezy/focus/focusable_wrapper.dart';
|
||||
import 'package:plezy/i18n/strings.g.dart';
|
||||
@@ -15,9 +12,6 @@ import 'package:plezy/media/media_item.dart';
|
||||
import 'package:plezy/media/media_kind.dart';
|
||||
import 'package:plezy/models/download_models.dart';
|
||||
import 'package:plezy/profiles/active_profile_provider.dart';
|
||||
import 'package:plezy/profiles/plex_home_service.dart';
|
||||
import 'package:plezy/profiles/profile_connection_registry.dart';
|
||||
import 'package:plezy/profiles/profile_registry.dart';
|
||||
import 'package:plezy/providers/download_provider.dart';
|
||||
import 'package:plezy/providers/multi_server_provider.dart';
|
||||
import 'package:plezy/services/data_aggregation_service.dart';
|
||||
@@ -33,6 +27,7 @@ import 'package:provider/provider.dart';
|
||||
|
||||
import '../../test_helpers/media_items.dart';
|
||||
import '../../test_helpers/prefs.dart';
|
||||
import '../../test_helpers/profile_stack.dart';
|
||||
|
||||
final _track = testMediaItem(
|
||||
id: 'track_1',
|
||||
@@ -303,25 +298,11 @@ void main() {
|
||||
testWidgets('keyboard long-press anchors the context menu to the focused card instead of a stale pointer', (
|
||||
tester,
|
||||
) async {
|
||||
final db = AppDatabase.forTesting(NativeDatabase.memory());
|
||||
final connections = ConnectionRegistry(db);
|
||||
final profileConnections = ProfileConnectionRegistry(db);
|
||||
final plexHome = PlexHomeService(
|
||||
connections: connections,
|
||||
profileConnections: profileConnections,
|
||||
plexHomeUserFetcher: (_) async => const [],
|
||||
);
|
||||
final activeProfileProvider = ActiveProfileProvider(
|
||||
registry: ProfileRegistry(db),
|
||||
plexHome: plexHome,
|
||||
connections: connections,
|
||||
);
|
||||
final stack = await ProfileStack.create(withStorage: false);
|
||||
final downloadProvider = _FakeDownloadProvider();
|
||||
addTearDown(() async {
|
||||
activeProfileProvider.dispose();
|
||||
await stack.dispose();
|
||||
downloadProvider.dispose();
|
||||
await plexHome.dispose();
|
||||
await db.close();
|
||||
});
|
||||
final service = _FakeMusicService(track: _track);
|
||||
final observer = MusicUiRouteObserver();
|
||||
@@ -330,7 +311,7 @@ void main() {
|
||||
wrap(
|
||||
service: service,
|
||||
observer: observer,
|
||||
activeProfileProvider: activeProfileProvider,
|
||||
activeProfileProvider: stack.active,
|
||||
downloadProvider: downloadProvider,
|
||||
),
|
||||
);
|
||||
|
||||
@@ -12,7 +12,6 @@ import 'package:plezy/mpv/mpv.dart';
|
||||
import 'package:plezy/media/media_source_info.dart';
|
||||
import 'package:plezy/providers/playback_state_provider.dart';
|
||||
import 'package:plezy/services/settings_service.dart';
|
||||
import 'package:plezy/theme/mono_tokens.dart';
|
||||
import 'package:plezy/widgets/video_controls/sheets/queue_sheet.dart';
|
||||
import 'package:plezy/widgets/video_controls/widgets/content_strip.dart';
|
||||
import 'package:plezy/widgets/video_controls/widgets/media_selector_thumbnail.dart';
|
||||
@@ -20,25 +19,7 @@ import 'package:provider/provider.dart';
|
||||
|
||||
import '../test_helpers/prefs.dart';
|
||||
import '../test_helpers/media_items.dart';
|
||||
|
||||
const _testTokens = MonoTokens(
|
||||
radiusSm: 8,
|
||||
radiusMd: 12,
|
||||
radiusLg: 20,
|
||||
radiusXs: 5,
|
||||
groupGap: 2,
|
||||
space: 8,
|
||||
fast: Duration(milliseconds: 1),
|
||||
normal: Duration(milliseconds: 1),
|
||||
slow: Duration(milliseconds: 1),
|
||||
expressive: Duration(milliseconds: 1),
|
||||
bg: Colors.black,
|
||||
surface: Colors.black,
|
||||
outline: Colors.white24,
|
||||
text: Colors.white,
|
||||
textMuted: Colors.white70,
|
||||
splashFactory: NoSplash.splashFactory,
|
||||
);
|
||||
import '../test_helpers/theme.dart';
|
||||
|
||||
void main() {
|
||||
TestWidgetsFlutterBinding.ensureInitialized();
|
||||
@@ -334,7 +315,7 @@ Widget _queueHarness({required PlaybackStateProvider playback, required Widget c
|
||||
value: playback,
|
||||
child: InputModeTracker(
|
||||
child: MaterialApp(
|
||||
theme: ThemeData(extensions: const [_testTokens]),
|
||||
theme: ThemeData(extensions: const [testMonoTokens]),
|
||||
home: Scaffold(body: SizedBox(width: 600, height: 400, child: child)),
|
||||
),
|
||||
),
|
||||
|
||||
@@ -9,14 +9,13 @@ import 'package:plezy/database/app_database.dart';
|
||||
import 'package:plezy/i18n/strings.g.dart';
|
||||
import 'package:plezy/media/ids.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';
|
||||
import 'package:plezy/services/plex_api_cache.dart';
|
||||
import 'package:plezy/theme/mono_theme.dart';
|
||||
import 'package:plezy/widgets/server_activities_button.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
import '../test_helpers/backend_client_fixtures.dart';
|
||||
import '../test_helpers/multi_server_fixtures.dart';
|
||||
|
||||
void main() {
|
||||
TestWidgetsFlutterBinding.ensureInitialized();
|
||||
@@ -31,15 +30,9 @@ void main() {
|
||||
tearDown(() => database.close());
|
||||
|
||||
testWidgets('togglePanel opens and closes the server activities overlay', (tester) async {
|
||||
final manager = MultiServerManager();
|
||||
final multiServerProvider = MultiServerProvider(manager, DataAggregationService(manager));
|
||||
final multiServerProvider = testMultiServer().provider;
|
||||
final buttonKey = GlobalKey<ServerActivitiesButtonState>();
|
||||
|
||||
addTearDown(() {
|
||||
multiServerProvider.dispose();
|
||||
manager.dispose();
|
||||
});
|
||||
|
||||
await tester.pumpWidget(
|
||||
TranslationProvider(
|
||||
child: ChangeNotifierProvider<MultiServerProvider>.value(
|
||||
@@ -178,15 +171,9 @@ class _ActivitiesHarness {
|
||||
Future<_ActivitiesHarness> _pumpActivitiesHarness(WidgetTester tester, _ControlledActivitiesClient transport) async {
|
||||
final serverId = ServerId('plex-server');
|
||||
final client = testPlexClient(serverId: serverId, serverName: 'Test server', httpClient: transport);
|
||||
final manager = MultiServerManager()..debugRegisterClientForTesting(client);
|
||||
final multiServerProvider = MultiServerProvider(manager, DataAggregationService(manager));
|
||||
final multiServerProvider = testMultiServer(clients: [client]).provider;
|
||||
final buttonKey = GlobalKey<ServerActivitiesButtonState>();
|
||||
|
||||
addTearDown(() {
|
||||
multiServerProvider.dispose();
|
||||
manager.dispose();
|
||||
});
|
||||
|
||||
await tester.pumpWidget(
|
||||
TranslationProvider(
|
||||
child: ChangeNotifierProvider<MultiServerProvider>.value(
|
||||
|
||||
@@ -17,32 +17,13 @@ import 'package:plezy/providers/multi_server_provider.dart';
|
||||
import 'package:plezy/services/data_aggregation_service.dart';
|
||||
import 'package:plezy/services/multi_server_manager.dart';
|
||||
import 'package:plezy/services/settings_service.dart';
|
||||
import 'package:plezy/theme/mono_tokens.dart';
|
||||
import 'package:plezy/utils/platform_detector.dart';
|
||||
import 'package:plezy/widgets/app_icon.dart';
|
||||
import 'package:plezy/widgets/side_navigation_rail.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
import '../test_helpers/prefs.dart';
|
||||
|
||||
const _testTokens = MonoTokens(
|
||||
radiusSm: 8,
|
||||
radiusMd: 12,
|
||||
radiusLg: 20,
|
||||
radiusXs: 5,
|
||||
groupGap: 2,
|
||||
space: 8,
|
||||
fast: Duration(milliseconds: 1),
|
||||
normal: Duration(milliseconds: 1),
|
||||
slow: Duration(milliseconds: 1),
|
||||
expressive: Duration(milliseconds: 1),
|
||||
bg: Colors.black,
|
||||
surface: Colors.black,
|
||||
outline: Colors.white24,
|
||||
text: Colors.white,
|
||||
textMuted: Colors.white70,
|
||||
splashFactory: NoSplash.splashFactory,
|
||||
);
|
||||
import '../test_helpers/theme.dart';
|
||||
|
||||
MediaLibrary _library({
|
||||
required String id,
|
||||
@@ -124,7 +105,7 @@ Future<void> _pumpBasicRail(
|
||||
ChangeNotifierProvider<MultiServerProvider>.value(value: multiServerProvider),
|
||||
],
|
||||
child: MaterialApp(
|
||||
theme: ThemeData(extensions: const [_testTokens]),
|
||||
theme: ThemeData(extensions: const [testMonoTokens]),
|
||||
home: Scaffold(
|
||||
body: height == null ? rail : SizedBox(height: height, child: rail),
|
||||
),
|
||||
@@ -172,7 +153,7 @@ void main() {
|
||||
ChangeNotifierProvider<MultiServerProvider>.value(value: multiServerProvider),
|
||||
],
|
||||
child: MaterialApp(
|
||||
theme: ThemeData(extensions: const [_testTokens]),
|
||||
theme: ThemeData(extensions: const [testMonoTokens]),
|
||||
home: Scaffold(
|
||||
body: SideNavigationRail(
|
||||
selectedTab: NavigationTabId.discover,
|
||||
@@ -237,7 +218,7 @@ void main() {
|
||||
ChangeNotifierProvider<MultiServerProvider>.value(value: multiServerProvider),
|
||||
],
|
||||
child: MaterialApp(
|
||||
theme: ThemeData(extensions: const [_testTokens]),
|
||||
theme: ThemeData(extensions: const [testMonoTokens]),
|
||||
home: Scaffold(
|
||||
body: SideNavigationRail(
|
||||
selectedTab: NavigationTabId.discover,
|
||||
@@ -263,7 +244,7 @@ void main() {
|
||||
await _pumpBasicRail(tester, alwaysExpanded: true);
|
||||
|
||||
final selectedItem = find.byType(NavigationRailItem).first;
|
||||
expect(_railItemDecoration(tester, selectedItem)?.color, _testTokens.text.withValues(alpha: 0.1));
|
||||
expect(_railItemDecoration(tester, selectedItem)?.color, testMonoTokens.text.withValues(alpha: 0.1));
|
||||
});
|
||||
|
||||
testWidgets('D-pad sidebar focus hides selected item background after focus moves', (tester) async {
|
||||
@@ -343,7 +324,7 @@ void main() {
|
||||
ChangeNotifierProvider<MultiServerProvider>.value(value: multiServerProvider),
|
||||
],
|
||||
child: MaterialApp(
|
||||
theme: ThemeData(extensions: const [_testTokens]),
|
||||
theme: ThemeData(extensions: const [testMonoTokens]),
|
||||
home: Scaffold(
|
||||
body: SideNavigationRail(
|
||||
selectedTab: NavigationTabId.discover,
|
||||
@@ -408,7 +389,7 @@ void main() {
|
||||
ChangeNotifierProvider<MultiServerProvider>.value(value: multiServerProvider),
|
||||
],
|
||||
child: MaterialApp(
|
||||
theme: ThemeData(extensions: const [_testTokens]),
|
||||
theme: ThemeData(extensions: const [testMonoTokens]),
|
||||
home: Scaffold(
|
||||
body: SideNavigationRail(
|
||||
key: sideNavKey,
|
||||
@@ -485,7 +466,7 @@ void main() {
|
||||
ChangeNotifierProvider<MultiServerProvider>.value(value: multiServerProvider),
|
||||
],
|
||||
child: MaterialApp(
|
||||
theme: ThemeData(extensions: const [_testTokens]),
|
||||
theme: ThemeData(extensions: const [testMonoTokens]),
|
||||
home: Scaffold(
|
||||
body: SideNavigationRail(
|
||||
key: sideNavKey,
|
||||
@@ -527,7 +508,7 @@ void main() {
|
||||
await tester.pumpWidget(
|
||||
InputModeTracker(
|
||||
child: MaterialApp(
|
||||
theme: ThemeData(extensions: const [_testTokens]),
|
||||
theme: ThemeData(extensions: const [testMonoTokens]),
|
||||
home: Scaffold(
|
||||
body: Builder(
|
||||
builder: (context) {
|
||||
|
||||
@@ -8,29 +8,11 @@ import 'package:plezy/i18n/strings.g.dart';
|
||||
import 'package:plezy/media/media_source_info.dart';
|
||||
import 'package:plezy/mpv/mpv.dart';
|
||||
import 'package:plezy/services/playback_subtitle_resolver.dart';
|
||||
import 'package:plezy/theme/mono_tokens.dart';
|
||||
import 'package:plezy/widgets/overlay_sheet.dart';
|
||||
import 'package:plezy/widgets/video_controls/models/track_controls_state.dart';
|
||||
import 'package:plezy/widgets/video_controls/sheets/track_sheet.dart';
|
||||
|
||||
const _testTokens = MonoTokens(
|
||||
radiusSm: 8,
|
||||
radiusMd: 12,
|
||||
radiusLg: 20,
|
||||
radiusXs: 5,
|
||||
groupGap: 2,
|
||||
space: 8,
|
||||
fast: Duration(milliseconds: 1),
|
||||
normal: Duration(milliseconds: 1),
|
||||
slow: Duration(milliseconds: 1),
|
||||
expressive: Duration(milliseconds: 1),
|
||||
bg: Colors.black,
|
||||
surface: Colors.black,
|
||||
outline: Colors.white24,
|
||||
text: Colors.white,
|
||||
textMuted: Colors.white70,
|
||||
splashFactory: NoSplash.splashFactory,
|
||||
);
|
||||
import '../test_helpers/theme.dart';
|
||||
|
||||
void main() {
|
||||
TestWidgetsFlutterBinding.ensureInitialized();
|
||||
@@ -175,7 +157,7 @@ void main() {
|
||||
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
theme: ThemeData(extensions: const [_testTokens]),
|
||||
theme: ThemeData(extensions: const [testMonoTokens]),
|
||||
home: OverlaySheetHost(
|
||||
child: Builder(
|
||||
builder: (context) {
|
||||
@@ -399,7 +381,7 @@ Future<void> _pumpTrackSheet(
|
||||
}) async {
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
theme: ThemeData(extensions: const [_testTokens]),
|
||||
theme: ThemeData(extensions: const [testMonoTokens]),
|
||||
home: OverlaySheetHost(
|
||||
child: Scaffold(
|
||||
body: SizedBox(
|
||||
|
||||
@@ -17,7 +17,6 @@ import 'package:plezy/services/playback_subtitle_resolver.dart';
|
||||
import 'package:plezy/providers/playback_state_provider.dart';
|
||||
import 'package:plezy/services/settings_service.dart';
|
||||
import 'package:plezy/services/video_volume_controller.dart';
|
||||
import 'package:plezy/theme/mono_tokens.dart';
|
||||
import 'package:plezy/widgets/video_controls/widgets/player_toast_indicator.dart';
|
||||
import 'package:plezy/widgets/video_controls/desktop_video_controls.dart';
|
||||
import 'package:plezy/widgets/video_controls/mobile_video_controls.dart';
|
||||
@@ -36,25 +35,7 @@ import 'package:plezy/widgets/video_controls/widgets/video_timeline_bar.dart';
|
||||
import '../test_helpers/watch_together_fakes.dart';
|
||||
import '../test_helpers/media_items.dart';
|
||||
import '../test_helpers/prefs.dart';
|
||||
|
||||
const _testTokens = MonoTokens(
|
||||
radiusSm: 8,
|
||||
radiusMd: 12,
|
||||
radiusLg: 20,
|
||||
radiusXs: 5,
|
||||
groupGap: 2,
|
||||
space: 8,
|
||||
fast: Duration(milliseconds: 1),
|
||||
normal: Duration(milliseconds: 1),
|
||||
slow: Duration(milliseconds: 1),
|
||||
expressive: Duration(milliseconds: 1),
|
||||
bg: Colors.black,
|
||||
surface: Colors.black,
|
||||
outline: Colors.white24,
|
||||
text: Colors.white,
|
||||
textMuted: Colors.white70,
|
||||
splashFactory: NoSplash.splashFactory,
|
||||
);
|
||||
import '../test_helpers/theme.dart';
|
||||
|
||||
void main() {
|
||||
TestWidgetsFlutterBinding.ensureInitialized();
|
||||
@@ -968,7 +949,7 @@ void main() {
|
||||
ChangeNotifierProvider<WatchTogetherProvider>.value(
|
||||
value: watchTogether,
|
||||
child: MaterialApp(
|
||||
theme: ThemeData(extensions: const [_testTokens]),
|
||||
theme: ThemeData(extensions: const [testMonoTokens]),
|
||||
home: Scaffold(
|
||||
body: SizedBox(
|
||||
width: 1000,
|
||||
@@ -1023,7 +1004,7 @@ void main() {
|
||||
ChangeNotifierProvider<WatchTogetherProvider>.value(
|
||||
value: watchTogether,
|
||||
child: MaterialApp(
|
||||
theme: ThemeData(extensions: const [_testTokens]),
|
||||
theme: ThemeData(extensions: const [testMonoTokens]),
|
||||
home: Scaffold(
|
||||
body: SizedBox(
|
||||
width: 500,
|
||||
@@ -1514,7 +1495,7 @@ void main() {
|
||||
ChangeNotifierProvider<WatchTogetherProvider>.value(value: watchTogether),
|
||||
],
|
||||
child: MaterialApp(
|
||||
theme: ThemeData(platform: TargetPlatform.macOS, extensions: const [_testTokens]),
|
||||
theme: ThemeData(platform: TargetPlatform.macOS, extensions: const [testMonoTokens]),
|
||||
home: Scaffold(
|
||||
body: SizedBox(
|
||||
width: 1200,
|
||||
@@ -1568,7 +1549,7 @@ void main() {
|
||||
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
theme: ThemeData(extensions: const [_testTokens]),
|
||||
theme: ThemeData(extensions: const [testMonoTokens]),
|
||||
home: Scaffold(
|
||||
body: SizedBox(
|
||||
width: 700,
|
||||
@@ -1604,7 +1585,7 @@ void main() {
|
||||
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
theme: ThemeData(extensions: const [_testTokens]),
|
||||
theme: ThemeData(extensions: const [testMonoTokens]),
|
||||
home: Scaffold(
|
||||
body: SizedBox(
|
||||
width: 700,
|
||||
@@ -1650,7 +1631,7 @@ void main() {
|
||||
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
theme: ThemeData(extensions: const [_testTokens]),
|
||||
theme: ThemeData(extensions: const [testMonoTokens]),
|
||||
home: Scaffold(
|
||||
body: SizedBox(
|
||||
width: 700,
|
||||
@@ -1703,7 +1684,7 @@ void main() {
|
||||
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
theme: ThemeData(extensions: const [_testTokens]),
|
||||
theme: ThemeData(extensions: const [testMonoTokens]),
|
||||
home: Scaffold(
|
||||
body: SizedBox(
|
||||
width: 700,
|
||||
@@ -1755,7 +1736,7 @@ void main() {
|
||||
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
theme: ThemeData(extensions: const [_testTokens]),
|
||||
theme: ThemeData(extensions: const [testMonoTokens]),
|
||||
home: Scaffold(
|
||||
body: SizedBox(
|
||||
width: 700,
|
||||
@@ -1865,7 +1846,7 @@ Future<void> _pumpSkipMarkerButton(
|
||||
}) {
|
||||
return tester.pumpWidget(
|
||||
MaterialApp(
|
||||
theme: ThemeData(extensions: const [_testTokens]),
|
||||
theme: ThemeData(extensions: const [testMonoTokens]),
|
||||
home: Scaffold(
|
||||
body: Center(
|
||||
child: SkipMarkerButton(
|
||||
|
||||
@@ -10,29 +10,10 @@ import 'package:plezy/mpv/player/player_streams.dart';
|
||||
import 'package:plezy/screens/settings/subtitle_styling_screen.dart';
|
||||
import 'package:plezy/services/sleep_timer_service.dart';
|
||||
import 'package:plezy/services/settings_service.dart';
|
||||
import 'package:plezy/theme/mono_tokens.dart';
|
||||
import 'package:plezy/widgets/video_controls/sheets/video_settings_sheet.dart';
|
||||
|
||||
import '../test_helpers/prefs.dart';
|
||||
|
||||
const _testTokens = MonoTokens(
|
||||
radiusSm: 4,
|
||||
radiusMd: 8,
|
||||
radiusLg: 20,
|
||||
radiusXs: 5,
|
||||
groupGap: 2,
|
||||
space: 8,
|
||||
fast: Duration(milliseconds: 100),
|
||||
normal: Duration(milliseconds: 200),
|
||||
slow: Duration(milliseconds: 300),
|
||||
expressive: Duration(milliseconds: 300),
|
||||
bg: Colors.black,
|
||||
surface: Color(0xFF111111),
|
||||
outline: Color(0xFF333333),
|
||||
text: Colors.white,
|
||||
textMuted: Color(0xFFAAAAAA),
|
||||
splashFactory: NoSplash.splashFactory,
|
||||
);
|
||||
import '../test_helpers/theme.dart';
|
||||
|
||||
void main() {
|
||||
setUpAll(() async {
|
||||
@@ -82,7 +63,7 @@ void main() {
|
||||
LocaleSettings.setLocaleSync(AppLocale.ru);
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
theme: ThemeData(extensions: const [_testTokens]),
|
||||
theme: ThemeData(extensions: const [testMonoTokensAnimated]),
|
||||
home: const SubtitleStylingScreen(),
|
||||
),
|
||||
);
|
||||
@@ -159,7 +140,7 @@ Future<void> _pumpSheet(
|
||||
}) async {
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
theme: ThemeData(extensions: const [_testTokens]),
|
||||
theme: ThemeData(extensions: const [testMonoTokensAnimated]),
|
||||
home: Scaffold(
|
||||
body: SizedBox(
|
||||
width: 900,
|
||||
|
||||
Reference in New Issue
Block a user