youtube_explode/test/streams_test.dart

71 lines
2.1 KiB
Dart

import 'package:test/test.dart';
import 'package:youtube_explode_dart/youtube_explode_dart.dart';
void main() {
group('Streams', () {
YoutubeExplode yt;
setUp(() {
yt = YoutubeExplode();
});
tearDown(() {
yt.close();
});
var data = {
'9bZkp7q19f0',
'SkRSXFQerZs',
'hySoCSoH-g8',
'_kmeFXjjGfk',
'MeJVWBSsPAY',
'5VGm0dczmHc',
'ZGdLIwrGHG8',
'rsAAeyAr-9Y',
'AI7ULzgf8RU'
};
for (var videoId in data) {
test('GetStreamsOfAnyVideo - $videoId', () async {
var manifest =
await yt.videos.streamsClient.getManifest(VideoId(videoId));
expect(manifest.streams, isNotEmpty);
});
}
test('GetStreamOfUnplayableVideo', () async {
expect(yt.videos.streamsClient.getManifest(VideoId('5qap5aO4i9A')),
throwsA(const TypeMatcher<VideoUnplayableException>()));
});
test('GetStreamOfPurchaseVideo', () async {
expect(yt.videos.streamsClient.getManifest(VideoId('p3dDcKOFXQg')),
throwsA(const TypeMatcher<VideoRequiresPurchaseException>()));
});
//TODO: Fix this with VideoRequiresPurchaseException.
test('GetStreamOfPurchaseVideo', () async {
expect(yt.videos.streamsClient.getManifest(VideoId('qld9w0b-1ao')),
throwsA(const TypeMatcher<VideoUnavailableException>()));
expect(yt.videos.streamsClient.getManifest(VideoId('pb_hHv3fByo')),
throwsA(const TypeMatcher<VideoUnavailableException>()));
});
test('GetStreamOfAnyPlayableVideo', () async {
var data = {
'9bZkp7q19f0',
'SkRSXFQerZs',
'hySoCSoH-g8',
'_kmeFXjjGfk',
'MeJVWBSsPAY',
'5VGm0dczmHc',
'ZGdLIwrGHG8',
'rsAAeyAr-9Y',
};
for (var videoId in data) {
var manifest =
await yt.videos.streamsClient.getManifest(VideoId(videoId));
for (var streamInfo in manifest.streams) {
var stream = await yt.videos.streamsClient.get(streamInfo).toList();
expect(stream, isNotEmpty);
}
}
}, timeout: const Timeout(Duration(minutes: 10)), skip: 'Takes too long.');
});
}