Files
ReelShort/test/playback/play_ticket_quality_test.dart

50 lines
1.4 KiB
Dart

// Author: fruit.com.cn
import 'package:flutter_test/flutter_test.dart';
import 'package:fruitshorts/core/data/models/play_ticket.dart';
void main() {
test('should_parse_all_qualities_when_ticket_returns_multiple_tracks', () {
final ticket = PlayTicket.fromJson(const {
'episodeId': '12',
'accessible': true,
'accessType': 'FREE',
'playUrl': '/files/episode/12.m3u8?e=1&s=abc',
'qualities': ['AUTO', '720p', '1080p'],
'tracks': [
{'quality': 'AUTO', 'playUrl': '/files/episode/12.m3u8?e=1&s=abc'},
{'quality': '720p', 'playUrl': '/files/transcoded/12/720p/index.m3u8?s=1'},
],
'likeCount': '17',
'commentCount': 5,
});
expect(ticket.qualities, ['AUTO', '720p', '1080p']);
expect(ticket.tracks[1].playUrl, contains('/720p/index.m3u8'));
expect(ticket.likeCount, 17);
expect(ticket.commentCount, 5);
expect(
siblingRenditionUrl(ticket.playUrl, '720P'),
isNull,
);
expect(
siblingRenditionUrl(
'/files/transcoded/9/master.m3u8?e=1&s=abc',
'720P',
),
'/files/transcoded/9/720p/index.m3u8?e=1&s=abc',
);
});
test('should_default_to_empty_qualities_when_field_is_missing', () {
final ticket = PlayTicket.fromJson(const {
'episodeId': '12',
'accessible': true,
'accessType': 'FREE',
'playUrl': '/files/episode/12.mp4',
});
expect(ticket.qualities, isEmpty);
});
}