2022-04-13 23:19:09 +02:00
|
|
|
import 'dart:math';
|
|
|
|
|
2020-06-06 11:28:36 +02:00
|
|
|
import 'package:test/test.dart';
|
|
|
|
import 'package:youtube_explode_dart/youtube_explode_dart.dart';
|
|
|
|
|
2022-04-13 23:19:09 +02:00
|
|
|
final rnd = Random();
|
|
|
|
const letters = r'abcdefghilmnopqrstuvzjkwy1234567890!@#$%^&*()_+{}|"?><|~`|';
|
|
|
|
|
2020-06-06 11:28:36 +02:00
|
|
|
void main() {
|
2021-03-11 14:20:10 +01:00
|
|
|
YoutubeExplode? yt;
|
2020-10-17 22:09:52 +02:00
|
|
|
setUp(() {
|
|
|
|
yt = YoutubeExplode();
|
|
|
|
});
|
2020-06-06 11:28:36 +02:00
|
|
|
|
2020-10-17 22:09:52 +02:00
|
|
|
tearDown(() {
|
2021-03-11 14:20:10 +01:00
|
|
|
yt?.close();
|
2020-10-17 22:09:52 +02:00
|
|
|
});
|
2020-06-06 11:28:36 +02:00
|
|
|
|
2021-03-04 12:20:00 +01:00
|
|
|
test('Search a youtube video from the search page', () async {
|
2022-04-13 23:19:09 +02:00
|
|
|
var videos = await yt!.search.search('undead corporation megalomania');
|
2020-10-17 22:09:52 +02:00
|
|
|
expect(videos, isNotEmpty);
|
|
|
|
});
|
2020-06-16 21:49:30 +02:00
|
|
|
|
2022-04-13 23:19:09 +02:00
|
|
|
test('Search with no results', () async {
|
|
|
|
var videos = await yt!.search.search(
|
|
|
|
List.generate(1300, (_) => letters[rnd.nextInt(letters.length)])
|
|
|
|
.join());
|
|
|
|
expect(videos, isEmpty);
|
|
|
|
var nextPage = await videos.nextPage();
|
|
|
|
expect(nextPage, isNull);
|
|
|
|
});
|
|
|
|
|
2022-04-13 23:30:40 +02:00
|
|
|
test('Search only videos', () async {
|
|
|
|
var videos =
|
2022-04-13 23:31:21 +02:00
|
|
|
await yt!.search.searchContent('Banana', filter: TypeFilters.video);
|
2022-04-13 23:30:40 +02:00
|
|
|
expect(videos, everyElement(isA<SearchVideo>()));
|
|
|
|
});
|
|
|
|
|
2022-04-13 23:19:09 +02:00
|
|
|
test('Search only channels', () async {
|
|
|
|
var channels = await yt!.search
|
|
|
|
.searchContent('PewDiePie', filter: TypeFilters.channel);
|
2022-04-13 23:30:40 +02:00
|
|
|
expect(channels, everyElement(isA<SearchChannel>()));
|
2022-04-13 23:19:09 +02:00
|
|
|
});
|
|
|
|
|
|
|
|
test('Search only playlists', () async {
|
2022-04-13 23:30:40 +02:00
|
|
|
var playlists =
|
2022-04-13 23:19:09 +02:00
|
|
|
await yt!.search.searchContent('Banana', filter: TypeFilters.playlist);
|
2022-04-13 23:30:40 +02:00
|
|
|
expect(playlists, everyElement(isA<SearchPlaylist>()));
|
2022-04-13 23:19:09 +02:00
|
|
|
});
|
|
|
|
|
|
|
|
test('Search test search filters', () async {
|
|
|
|
var featureSearch =
|
|
|
|
await yt!.search.searchContent('hello', filter: FeatureFilters.hd);
|
|
|
|
expect(featureSearch, isNotEmpty);
|
|
|
|
|
|
|
|
var uploadSearch = await yt!.search
|
|
|
|
.searchContent('hello', filter: UploadDateFilter.lastHour);
|
|
|
|
expect(uploadSearch, isNotEmpty);
|
|
|
|
|
|
|
|
var durationSearch =
|
|
|
|
await yt!.search.searchContent('hello', filter: DurationFilters.long);
|
|
|
|
expect(durationSearch, isNotEmpty);
|
|
|
|
|
|
|
|
var sortSearch =
|
|
|
|
await yt!.search.searchContent('hello', filter: SortFilters.viewCount);
|
|
|
|
expect(sortSearch, isNotEmpty);
|
|
|
|
});
|
|
|
|
|
|
|
|
test('Search raw', () async {
|
|
|
|
var search = await yt!.search.searchRaw('hello');
|
|
|
|
expect(search.content, isNotEmpty);
|
|
|
|
expect(search.relatedVideos, isNotEmpty);
|
|
|
|
expect(search.estimatedResults, greaterThan(1));
|
|
|
|
});
|
|
|
|
|
|
|
|
test('Get youtube search suggestions', () async {
|
|
|
|
var suggestions = await yt!.search.getQuerySuggestions('hello');
|
|
|
|
expect(suggestions, isNotEmpty);
|
2020-10-27 14:44:11 +01:00
|
|
|
});
|
2020-06-06 11:28:36 +02:00
|
|
|
}
|