feat(jellyfin): add folder browsing and playback

This commit is contained in:
edde746
2026-05-26 01:39:39 +02:00
parent 8e53232961
commit 1958f8ca7e
13 changed files with 625 additions and 75 deletions
+63
View File
@@ -0,0 +1,63 @@
import 'package:flutter/material.dart';
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/screens/libraries/folder_tree_item.dart';
void main() {
testWidgets('folder rows use the item title for seasons', (tester) async {
final item = MediaItem(
id: 'season-1',
backend: MediaBackend.jellyfin,
kind: MediaKind.season,
title: 'Season 1',
grandparentTitle: 'TV Show',
raw: const {'Type': 'Season', 'IsFolder': true},
);
await tester.pumpWidget(
MaterialApp(
home: Material(child: FolderTreeItem(item: item, depth: 1, isFolder: true)),
),
);
expect(find.text('Season 1'), findsOneWidget);
expect(find.text('TV Show'), findsNothing);
expect(find.byType(IconButton), findsNothing);
});
testWidgets('folder rows show play and shuffle buttons when callbacks are supplied', (tester) async {
final item = MediaItem(
id: 'folder-1',
backend: MediaBackend.jellyfin,
kind: MediaKind.unknown,
title: 'Videos',
raw: const {'Type': 'Folder', 'IsFolder': true},
);
var played = false;
var shuffled = false;
await tester.pumpWidget(
MaterialApp(
home: Material(
child: FolderTreeItem(
item: item,
depth: 0,
isFolder: true,
onPlayAll: () => played = true,
onShuffle: () => shuffled = true,
),
),
),
);
expect(find.byType(IconButton), findsNWidgets(2));
await tester.tap(find.byType(IconButton).first);
await tester.tap(find.byType(IconButton).last);
expect(played, isTrue);
expect(shuffled, isTrue);
});
}