Add provider tag suggestions and tag categories
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:gel_rule_app/backend/mappers/danbooru_mapper.dart';
|
||||
import 'package:gel_rule_app/backend/mappers/e621_mapper.dart';
|
||||
import 'package:gel_rule_app/backend/mappers/gelbooru_mapper.dart';
|
||||
import 'package:gel_rule_app/backend/mappers/moebooru_mapper.dart';
|
||||
import 'package:gel_rule_app/backend/mappers/rule34_mapper.dart';
|
||||
|
||||
void main() {
|
||||
@@ -59,6 +61,24 @@ void main() {
|
||||
expect(posts.single.fileType, 'video');
|
||||
});
|
||||
|
||||
test('parses Rule34 gif with query and file_ext', () {
|
||||
final posts = Rule34Mapper.postsFromResponse(
|
||||
{
|
||||
'posts': [
|
||||
{
|
||||
'id': '33',
|
||||
'file_url': 'https://example.test/c.gif?download=1',
|
||||
'file_ext': 'gif',
|
||||
}
|
||||
],
|
||||
},
|
||||
providerId: 'rule34',
|
||||
providerName: 'Rule34',
|
||||
);
|
||||
|
||||
expect(posts.single.fileType, 'gif');
|
||||
});
|
||||
|
||||
test('parses Danbooru response', () {
|
||||
final posts = DanbooruMapper.postsFromResponse(
|
||||
[
|
||||
@@ -81,6 +101,76 @@ void main() {
|
||||
expect(posts.single.tags, ['blue', 'sky']);
|
||||
});
|
||||
|
||||
test('parses Danbooru tag groups', () {
|
||||
final posts = DanbooruMapper.postsFromResponse(
|
||||
[
|
||||
{
|
||||
'id': 40,
|
||||
'file_url': 'https://example.test/d.jpg',
|
||||
'tag_string_general': 'blue sky',
|
||||
'tag_string_artist': 'artist_name',
|
||||
'tag_string_character': 'char_name',
|
||||
}
|
||||
],
|
||||
providerId: 'danbooru',
|
||||
providerName: 'Danbooru',
|
||||
);
|
||||
|
||||
expect(posts.single.tagGroups['artist'], ['artist_name']);
|
||||
expect(posts.single.tagGroups['character'], ['char_name']);
|
||||
expect(posts.single.tagGroups['general'], ['blue', 'sky']);
|
||||
});
|
||||
|
||||
test('parses Moebooru response through Danbooru-compatible mapper', () {
|
||||
final posts = MoebooruMapper.postsFromResponse(
|
||||
[
|
||||
{
|
||||
'id': 50,
|
||||
'file_url': 'https://example.test/moe.png',
|
||||
'tag_string': 'konachan_test',
|
||||
}
|
||||
],
|
||||
providerId: 'konachan',
|
||||
providerName: 'Konachan',
|
||||
);
|
||||
|
||||
expect(posts.single.providerId, 'konachan');
|
||||
expect(posts.single.tags, ['konachan_test']);
|
||||
});
|
||||
|
||||
test('parses e621 response and tag groups', () {
|
||||
final posts = E621Mapper.postsFromResponse(
|
||||
{
|
||||
'posts': [
|
||||
{
|
||||
'id': 60,
|
||||
'file': {
|
||||
'url': 'https://example.test/e.webm',
|
||||
'width': 1280,
|
||||
'height': 720,
|
||||
'ext': 'webm',
|
||||
},
|
||||
'preview': {'url': 'https://example.test/e-preview.jpg'},
|
||||
'sample': {'url': 'https://example.test/e-sample.jpg'},
|
||||
'rating': 'e',
|
||||
'score': {'total': 10},
|
||||
'tags': {
|
||||
'artist': ['artist_e'],
|
||||
'species': ['wolf'],
|
||||
'general': ['running'],
|
||||
},
|
||||
}
|
||||
],
|
||||
},
|
||||
providerId: 'e621',
|
||||
providerName: 'e621',
|
||||
);
|
||||
|
||||
expect(posts.single.fileType, 'video');
|
||||
expect(posts.single.rating, 'explicit');
|
||||
expect(posts.single.tagGroups['species'], ['wolf']);
|
||||
});
|
||||
|
||||
test('missing optional fields do not crash parser', () {
|
||||
final posts = GelbooruMapper.postsFromResponse(
|
||||
[
|
||||
|
||||
Reference in New Issue
Block a user