@@ -7,6 +7,7 @@ import 'package:http/http.dart' as http;
|
||||
import 'package:http/testing.dart';
|
||||
import 'package:plezy/connection/connection.dart';
|
||||
import 'package:plezy/database/app_database.dart';
|
||||
import 'package:plezy/media/media_server_client.dart';
|
||||
import 'package:plezy/models/plex/plex_config.dart';
|
||||
import 'package:plezy/services/data_aggregation_service.dart';
|
||||
import 'package:plezy/services/jellyfin_client.dart';
|
||||
@@ -366,6 +367,10 @@ void main() {
|
||||
captured.where((uri) => uri.path == '/Users/user-1/Items/Latest').map((uri) => uri.queryParameters['ParentId']),
|
||||
['lib-1', 'lib-2', 'lib-3', 'lib-4'],
|
||||
);
|
||||
expect(
|
||||
captured.where((uri) => uri.path == '/Users/user-1/Items/Latest').map((uri) => uri.queryParameters['Limit']),
|
||||
everyElement(defaultHubPreviewLimit.toString()),
|
||||
);
|
||||
});
|
||||
|
||||
test('global home layout falls back to per-library hubs for Jellyfin', () async {
|
||||
@@ -414,6 +419,10 @@ void main() {
|
||||
captured.where((uri) => uri.path == '/Users/user-1/Items/Latest').map((uri) => uri.queryParameters['ParentId']),
|
||||
['movies', 'shows'],
|
||||
);
|
||||
expect(
|
||||
captured.where((uri) => uri.path == '/Users/user-1/Items/Latest').map((uri) => uri.queryParameters['Limit']),
|
||||
everyElement(defaultHubPreviewLimit.toString()),
|
||||
);
|
||||
});
|
||||
|
||||
test('Plex home layout keeps promoted hubs instead of splitting by preview libraries', () async {
|
||||
@@ -472,6 +481,7 @@ void main() {
|
||||
expect(hubs.single.libraryId, isNull);
|
||||
expect(hubs.single.items, hasLength(7));
|
||||
expect(captured.map((uri) => uri.path), ['/hubs/promoted']);
|
||||
expect(captured.single.queryParameters['count'], defaultHubPreviewLimit.toString());
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ import 'package:plezy/media/library_query.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/media/media_server_client.dart';
|
||||
import 'package:plezy/models/transcode_quality_preset.dart';
|
||||
import 'package:plezy/services/jellyfin_client.dart';
|
||||
import 'package:plezy/services/playback_initialization_types.dart';
|
||||
@@ -2163,6 +2164,30 @@ void main() {
|
||||
|
||||
Uri capturedNextUpRequest() => captured.singleWhere((uri) => uri.path == '/Shows/NextUp');
|
||||
|
||||
test('global preview defaults to shared limit and marks filled previews as more', () async {
|
||||
captured = [];
|
||||
final mock = MockClient((req) async {
|
||||
captured.add(req.url);
|
||||
return http.Response(
|
||||
jsonEncode({
|
||||
'Items': [
|
||||
for (var i = 0; i < defaultHubPreviewLimit; i++) {'Id': 'movie-$i', 'Type': 'Movie', 'Name': 'Movie $i'},
|
||||
],
|
||||
}),
|
||||
200,
|
||||
headers: {'content-type': 'application/json'},
|
||||
);
|
||||
});
|
||||
final client = JellyfinClient.forTesting(connection: _conn(), httpClient: mock);
|
||||
addTearDown(client.close);
|
||||
|
||||
final hubs = await client.fetchGlobalHubs(includePlaybackHubs: false);
|
||||
|
||||
expect(captured.single.queryParameters['Limit'], defaultHubPreviewLimit.toString());
|
||||
expect(hubs.single.items, hasLength(defaultHubPreviewLimit));
|
||||
expect(hubs.single.more, isTrue);
|
||||
});
|
||||
|
||||
test('global Next Up excludes resumable episodes without date cutoff', () async {
|
||||
final client = buildClient();
|
||||
addTearDown(client.close);
|
||||
|
||||
Reference in New Issue
Block a user