Files
plezy/test/utils/media_image_helper_test.dart
T

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);
});
});
}