Prepare Lunaris 1.1.2 experimental
This commit is contained in:
@@ -76,6 +76,8 @@ void main() {
|
||||
'realbooru',
|
||||
'xbooru',
|
||||
'cosbooru',
|
||||
'kemono',
|
||||
'coomer',
|
||||
]);
|
||||
expect(
|
||||
providers.singleWhere((provider) => provider.id == 'realbooru').enabled,
|
||||
@@ -93,6 +95,12 @@ void main() {
|
||||
providers.singleWhere((provider) => provider.id == 'cosbooru');
|
||||
expect(cosbooru.baseUrl, 'https://cos.lycore.co');
|
||||
expect(cosbooru.apiType, 'danbooru');
|
||||
final kemono = providers.singleWhere((provider) => provider.id == 'kemono');
|
||||
final coomer = providers.singleWhere((provider) => provider.id == 'coomer');
|
||||
expect(kemono.enabled, isTrue);
|
||||
expect(kemono.apiType, 'kemono');
|
||||
expect(coomer.enabled, isFalse);
|
||||
expect(coomer.apiType, 'coomer');
|
||||
});
|
||||
|
||||
test('provider repository migrates old CosBooru config', () async {
|
||||
|
||||
@@ -6,6 +6,7 @@ import 'package:gel_rule_app/backend/mappers/moebooru_mapper.dart';
|
||||
import 'package:gel_rule_app/backend/mappers/rule34_mapper.dart';
|
||||
import 'package:gel_rule_app/backend/models/content_provider_config.dart';
|
||||
import 'package:gel_rule_app/backend/providers/danbooru_provider.dart';
|
||||
import 'package:gel_rule_app/backend/providers/kemono_provider.dart';
|
||||
import 'package:gel_rule_app/backend/providers/provider_factory.dart';
|
||||
import 'package:gel_rule_app/backend/providers/realbooru_provider.dart';
|
||||
import 'package:gel_rule_app/backend/repositories/provider_repository.dart';
|
||||
@@ -68,6 +69,30 @@ void main() {
|
||||
expect(posts.single.rating, 'explicit');
|
||||
});
|
||||
|
||||
test('parses Gelbooru compatible tag category fields', () {
|
||||
final posts = GelbooruMapper.postsFromResponse(
|
||||
[
|
||||
{
|
||||
'id': '8',
|
||||
'file_url': 'https://example.test/cat.jpg',
|
||||
'tag_string_artist': 'artist_name',
|
||||
'tag_string_character': 'char_name',
|
||||
'tag_string_copyright': 'source_title',
|
||||
'tag_string_general': 'blue sky',
|
||||
'tag_string_meta': 'highres',
|
||||
}
|
||||
],
|
||||
providerId: 'gelbooru',
|
||||
providerName: 'Gelbooru',
|
||||
);
|
||||
|
||||
expect(posts.single.tagGroups['artist'], ['artist_name']);
|
||||
expect(posts.single.tagGroups['character'], ['char_name']);
|
||||
expect(posts.single.tagGroups['copyright'], ['source_title']);
|
||||
expect(posts.single.tagGroups['general'], ['blue', 'sky']);
|
||||
expect(posts.single.tagGroups['meta'], ['highres']);
|
||||
});
|
||||
|
||||
test('parses Rule34 compatible response', () {
|
||||
final posts = Rule34Mapper.postsFromResponse(
|
||||
{
|
||||
@@ -231,6 +256,16 @@ void main() {
|
||||
expect(cosbooru.enabled, isTrue);
|
||||
expect(cosbooru.apiType, 'danbooru');
|
||||
expect(cosbooru.baseUrl, 'https://cos.lycore.co');
|
||||
final kemono = ProviderRepository.seedProviders()
|
||||
.where((provider) => provider.id == 'kemono')
|
||||
.single;
|
||||
final coomer = ProviderRepository.seedProviders()
|
||||
.where((provider) => provider.id == 'coomer')
|
||||
.single;
|
||||
expect(kemono.enabled, isTrue);
|
||||
expect(kemono.apiType, 'kemono');
|
||||
expect(coomer.enabled, isFalse);
|
||||
expect(coomer.apiType, 'coomer');
|
||||
});
|
||||
|
||||
test('provider factory creates Realbooru provider', () {
|
||||
@@ -268,4 +303,24 @@ void main() {
|
||||
|
||||
expect(provider, isA<DanbooruProvider>());
|
||||
});
|
||||
|
||||
test('provider factory creates Kemono and Coomer artist providers', () {
|
||||
final now = DateTime(2026);
|
||||
for (final apiType in ['kemono', 'coomer']) {
|
||||
final provider = ProviderFactory().create(ContentProviderConfig(
|
||||
id: apiType,
|
||||
name: apiType,
|
||||
baseUrl: 'https://$apiType.su',
|
||||
apiType: apiType,
|
||||
enabled: true,
|
||||
priority: 10,
|
||||
timeoutSeconds: 20,
|
||||
customHeaders: const {},
|
||||
createdAt: now,
|
||||
updatedAt: now,
|
||||
));
|
||||
|
||||
expect(provider, isA<KemonoProvider>());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ import 'package:gel_rule_app/features/post/presentation/widgets/post_tags_panel.
|
||||
import 'package:go_router/go_router.dart';
|
||||
|
||||
void main() {
|
||||
testWidgets('post tags panel renders category rows compactly',
|
||||
testWidgets('post tags panel renders category blocks with wrapping chips',
|
||||
(tester) async {
|
||||
final router = GoRouter(
|
||||
routes: [
|
||||
@@ -31,7 +31,10 @@ void main() {
|
||||
expect(find.text('Artist'), findsOneWidget);
|
||||
expect(find.text('Character'), findsOneWidget);
|
||||
expect(find.text('General'), findsOneWidget);
|
||||
expect(find.text('artist_name'), findsOneWidget);
|
||||
expect(find.text('hero'), findsOneWidget);
|
||||
expect(find.text('tag_0'), findsOneWidget);
|
||||
expect(find.text('+'), findsNothing);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user