mirror of
https://github.com/zarzet/SpotiFLAC-Mobile.git
synced 2026-09-16 14:55:27 +02:00
68 lines
2.3 KiB
Dart
68 lines
2.3 KiB
Dart
import 'dart:async';
|
|
|
|
import 'package:flutter/material.dart';
|
|
import 'package:flutter/services.dart';
|
|
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:spotiflac_android/l10n/app_localizations.dart';
|
|
import 'package:spotiflac_android/services/app_navigation_service.dart';
|
|
import 'package:spotiflac_android/utils/extension_auth_launcher.dart';
|
|
|
|
void main() {
|
|
const channel = MethodChannel('com.zarz.spotiflac/backend');
|
|
|
|
tearDown(() {
|
|
TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger
|
|
.setMockMethodCallHandler(channel, null);
|
|
});
|
|
|
|
Future<void> showApp(WidgetTester tester) => tester.pumpWidget(
|
|
MaterialApp(
|
|
navigatorKey: AppNavigationService.rootNavigatorKey,
|
|
localizationsDelegates: AppLocalizations.localizationsDelegates,
|
|
supportedLocales: AppLocalizations.supportedLocales,
|
|
home: const Scaffold(body: Text('Library')),
|
|
),
|
|
);
|
|
|
|
testWidgets('missing pending challenge explains why no page opened', (
|
|
tester,
|
|
) async {
|
|
TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger
|
|
.setMockMethodCallHandler(channel, (call) async {
|
|
expect(call.method, 'getExtensionPendingAuth');
|
|
return null;
|
|
});
|
|
await showApp(tester);
|
|
expect(await openPendingExtensionVerification('provider-a'), isFalse);
|
|
await tester.pump();
|
|
expect(
|
|
find.text(
|
|
'No verification page is available for provider-a. '
|
|
'Retry the download to request a new challenge.',
|
|
),
|
|
findsOneWidget,
|
|
);
|
|
await tester.pumpWidget(const SizedBox.shrink());
|
|
});
|
|
|
|
testWidgets('cancelled pending lookup does not show a failure message', (
|
|
tester,
|
|
) async {
|
|
final pending = Completer<Object?>();
|
|
final cancellation = Completer<void>();
|
|
TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger
|
|
.setMockMethodCallHandler(channel, (_) => pending.future);
|
|
await showApp(tester);
|
|
final result = openPendingExtensionVerification(
|
|
'provider-a',
|
|
cancellationSignal: cancellation.future,
|
|
);
|
|
cancellation.complete();
|
|
expect(await result, isFalse);
|
|
pending.complete();
|
|
await tester.pump();
|
|
expect(find.byType(SnackBar), findsNothing);
|
|
await tester.pumpWidget(const SizedBox.shrink());
|
|
});
|
|
}
|