feat: add episode action setting

close #1351
This commit is contained in:
edde746
2026-06-18 11:16:38 +02:00
parent 075e4aeb32
commit 94f2daa22e
38 changed files with 317 additions and 75 deletions
+14
View File
@@ -87,6 +87,20 @@ void main() {
});
});
group('SettingsService episode action', () {
test('defaults to play and resets to play', () async {
final settings = await SettingsService.getInstance();
expect(settings.read(SettingsService.episodeAction), EpisodeAction.play);
await settings.write(SettingsService.episodeAction, EpisodeAction.details);
expect(settings.read(SettingsService.episodeAction), EpisodeAction.details);
await settings.resetAllSettings();
expect(settings.read(SettingsService.episodeAction), EpisodeAction.play);
});
});
group('SettingsService platform gates', () {
test('audio passthrough stays available on desktop but not Apple TV', () {
expect(PlatformDetector.supportsAudioPassthrough(), isTrue);
@@ -2,6 +2,7 @@ import 'package:flutter_test/flutter_test.dart';
import 'package:plezy/media/media_backend.dart';
import 'package:plezy/media/media_item.dart';
import 'package:plezy/media/media_kind.dart';
import 'package:plezy/services/settings_service.dart';
import 'package:plezy/utils/media_navigation_helper.dart';
void main() {
@@ -57,4 +58,46 @@ void main() {
expect(target.initialSeasonId, isNull);
expect(target.initialEpisodeId, isNull);
});
group('episode activation details decision', () {
test('normal activation uses the episode action setting', () {
expect(
shouldOpenEpisodeDetailsForActivation(
playDirectly: false,
continueWatchingAction: ContinueWatchingAction.details,
episodeAction: EpisodeAction.play,
),
isFalse,
);
expect(
shouldOpenEpisodeDetailsForActivation(
playDirectly: false,
continueWatchingAction: ContinueWatchingAction.play,
episodeAction: EpisodeAction.details,
),
isTrue,
);
});
test('play-direct activation uses only the continue watching action setting', () {
expect(
shouldOpenEpisodeDetailsForActivation(
playDirectly: true,
continueWatchingAction: ContinueWatchingAction.play,
episodeAction: EpisodeAction.details,
),
isFalse,
);
expect(
shouldOpenEpisodeDetailsForActivation(
playDirectly: true,
continueWatchingAction: ContinueWatchingAction.details,
episodeAction: EpisodeAction.play,
),
isTrue,
);
});
});
}