63 lines
2.0 KiB
Dart
63 lines
2.0 KiB
Dart
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:plezy/utils/media_image_helper.dart';
|
|
|
|
void main() {
|
|
group('MediaImageHelper.getOptimizedImageUrl', () {
|
|
test('adds size hints to absolute Jellyfin artwork URLs', () {
|
|
final url = MediaImageHelper.getOptimizedImageUrl(
|
|
thumbPath: 'https://jf.example/Items/item-1/Images/Primary?tag=abc&api_key=token',
|
|
maxWidth: 120,
|
|
maxHeight: 180,
|
|
devicePixelRatio: 2,
|
|
);
|
|
|
|
final uri = Uri.parse(url);
|
|
expect(uri.queryParameters['tag'], 'abc');
|
|
expect(uri.queryParameters['api_key'], 'token');
|
|
expect(uri.queryParameters['maxWidth'], '240');
|
|
expect(uri.queryParameters['maxHeight'], '360');
|
|
});
|
|
|
|
test('preserves existing Jellyfin size hints and fills missing dimension', () {
|
|
final url = MediaImageHelper.getOptimizedImageUrl(
|
|
thumbPath: 'https://jf.example/Items/item-1/Images/Primary?api_key=token&maxWidth=100',
|
|
maxWidth: 120,
|
|
maxHeight: 180,
|
|
devicePixelRatio: 2,
|
|
);
|
|
|
|
final uri = Uri.parse(url);
|
|
expect(uri.queryParameters['api_key'], 'token');
|
|
expect(uri.queryParameters['maxWidth'], '100');
|
|
expect(uri.queryParameters['maxHeight'], '360');
|
|
});
|
|
|
|
test('leaves non-Jellyfin external URLs unchanged without a proxy client', () {
|
|
const original = 'https://images.example/poster.jpg';
|
|
|
|
final url = MediaImageHelper.getOptimizedImageUrl(
|
|
thumbPath: original,
|
|
maxWidth: 120,
|
|
maxHeight: 180,
|
|
devicePixelRatio: 2,
|
|
);
|
|
|
|
expect(url, original);
|
|
});
|
|
|
|
test('leaves Jellyfin artwork unchanged when transcoding is disabled', () {
|
|
const original = 'https://jf.example/Items/item-1/Images/Primary?tag=abc&api_key=token';
|
|
|
|
final url = MediaImageHelper.getOptimizedImageUrl(
|
|
thumbPath: original,
|
|
maxWidth: 120,
|
|
maxHeight: 180,
|
|
devicePixelRatio: 2,
|
|
enableTranscoding: false,
|
|
);
|
|
|
|
expect(url, original);
|
|
});
|
|
});
|
|
}
|