Initial commit

This commit is contained in:
admin1
2026-07-14 11:11:36 +08:00
commit 656499cf94
604 changed files with 119518 additions and 0 deletions
@@ -0,0 +1,85 @@
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:forui/forui.dart';
import 'package:smplayer/core/contracts/auth.dart';
import 'package:smplayer/features/home/widgets/server_dropdown_button.dart';
import 'package:smplayer/providers/home_page_mode_provider.dart';
import 'package:smplayer/providers/session_provider.dart';
void main() {
testWidgets('server mode uses a capsule dropdown trigger', (tester) async {
await _pumpButton(tester, mode: HomePageMode.server);
expect(find.byType(BackdropFilter), findsOneWidget);
expect(find.byType(FPopoverMenu), findsOneWidget);
expect(find.text('Alpha'), findsOneWidget);
await tester.tap(find.text('Alpha'));
await tester.pumpAndSettle();
expect(find.text('推荐'), findsOneWidget);
expect(find.text('Beta'), findsOneWidget);
});
testWidgets('recommend mode uses the same capsule dropdown trigger', (
tester,
) async {
await _pumpButton(tester, mode: HomePageMode.recommend);
expect(find.byType(BackdropFilter), findsOneWidget);
expect(find.byType(FPopoverMenu), findsOneWidget);
expect(find.text('推荐'), findsOneWidget);
await tester.tap(find.text('推荐'));
await tester.pumpAndSettle();
expect(find.text('Alpha'), findsOneWidget);
expect(find.text('Beta'), findsOneWidget);
});
}
Future<void> _pumpButton(
WidgetTester tester, {
required HomePageMode mode,
}) async {
await tester.pumpWidget(
ProviderScope(
overrides: [
homePageModeProvider.overrideWith((_) => mode),
sessionProvider.overrideWith(_FakeSessionNotifier.new),
],
child: const MaterialApp(
home: Scaffold(body: Center(child: ServerDropdownButton())),
),
),
);
await tester.pumpAndSettle();
}
class _FakeSessionNotifier extends SessionNotifier {
@override
Future<SessionListRes> build() async => const SessionListRes(
activeServerId: 'alpha',
sessions: [
AuthedSession(
serverId: 'alpha',
serverName: 'Alpha',
serverUrl: 'https://alpha.example',
token: 'token-a',
userId: 'user-a',
userName: 'User A',
isActive: true,
),
AuthedSession(
serverId: 'beta',
serverName: 'Beta',
serverUrl: 'https://beta.example',
token: 'token-b',
userId: 'user-b',
userName: 'User B',
isActive: false,
),
],
);
}