50 lines
1.4 KiB
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);
|
|
});
|
|
}
|