[verified] Publish ReelBox source under GPLv3

This commit is contained in:
Hermes committed 2026-11-12 23:41:13 +00:00
commit db2b505ca3
445 files changed
+105274

No files matched your search

+84
View File
@@ -0,0 +1,84 @@
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:reelbox/data/models.dart';
import 'package:reelbox/media/media_platform.dart';
import 'package:reelbox/ui/catalog.dart';
import 'catalog_widget_test.dart' show CatalogApi, mountCatalog;
void main() {
testWidgets(
'source has a visible external-player button independent of preference',
(tester) async {
final calls = <MethodCall>[];
tester.binding.defaultBinaryMessenger.setMockMethodCallHandler(
MediaPlatform.channel,
(call) async {
calls.add(call);
return call.method == 'openExternal';
},
);
addTearDown(() {
tester.binding.defaultBinaryMessenger.setMockMethodCallHandler(
MediaPlatform.channel,
null,
);
});
final state = await mountCatalog(
tester,
CatalogApi(),
const TitlePage(title: TitleRecord(id: 7, title: 'Fixture')),
);
addTearDown(state.dispose);
expect(state.prefs.externalPlayer, false);
final button = find.widgetWithText(TextButton, 'External player').first;
await tester.ensureVisible(button);
await tester.tap(button);
await tester.pumpAndSettle();
final call = calls.singleWhere((call) => call.method == 'openExternal');
expect(call.arguments['url'], 'https://media.example/movie.mp4');
expect(call.arguments['packageName'], 'ask');
expect(state.prefs.externalPlayer, false);
expect(tester.takeException(), isNull);
},
variant: TargetPlatformVariant.only(TargetPlatform.android),
);
testWidgets(
'external-player failure is recoverable without opening an internal decoder',
(tester) async {
tester.binding.defaultBinaryMessenger.setMockMethodCallHandler(
MediaPlatform.channel,
(call) async {
if (call.method == 'openExternal') {
throw PlatformException(code: 'NO_PLAYER');
}
return null;
},
);
addTearDown(() {
tester.binding.defaultBinaryMessenger.setMockMethodCallHandler(
MediaPlatform.channel,
null,
);
});
final state = await mountCatalog(
tester,
CatalogApi(),
const TitlePage(title: TitleRecord(id: 7, title: 'Fixture')),
);
addTearDown(state.dispose);
final button = find.widgetWithText(TextButton, 'External player').first;
await tester.ensureVisible(button);
await tester.tap(button);
await tester.pump();
expect(
find.text('No external player could open this source.'),
findsOneWidget,
);
expect(tester.takeException(), isNull);
},
variant: TargetPlatformVariant.only(TargetPlatform.android),
);
}