Files
gopeed/ui/flutter/test/app/router/app_router_test.dart
T

37 lines
1.6 KiB
Dart

import 'package:flutter/foundation.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:go_router/go_router.dart';
import 'package:gopeed/app/router/app_router.dart';
import 'package:gopeed/features/auth/application/web_auth_controller.dart';
void main() {
TestWidgetsFlutterBinding.ensureInitialized();
for (final platform in TargetPlatform.values) {
test('$platform preserves the expected section route stacks', () {
debugDefaultTargetPlatformOverride = platform;
addTearDown(() => debugDefaultTargetPlatformOverride = null);
final auth = WebAuthController();
final router = AppRouter.build(auth);
addTearDown(router.dispose);
addTearDown(auth.dispose);
final isMobile = platform == TargetPlatform.android || platform == TargetPlatform.iOS;
for (final entry in {
'/': ['/'],
'/extensions': isMobile ? ['/', 'extensions'] : ['/extensions'],
'/extensions/example': isMobile ? ['/', 'extensions', ':id'] : ['/extensions', ':id'],
'/settings': isMobile ? ['/', 'settings'] : ['/settings'],
'/settings/general': isMobile ? ['/', 'settings', ':section'] : ['/settings', ':section'],
'/tasks/example': ['/', 'tasks/:id'],
'/create': ['/', 'create'],
}.entries) {
final match = router.configuration.findMatch(Uri.parse(entry.key));
expect(match.isError, isFalse);
final shell = match.matches.single as ShellRouteMatch;
expect(shell.matches.map((match) => (match.route as GoRoute).path), entry.value);
}
});
}
}