Rebrand to Lunaris and add CosBooru providers

This commit is contained in:
2026-05-25 19:41:57 +03:00
parent 3bf7fe6305
commit 369dee02be
19 changed files with 300 additions and 92 deletions
+42
View File
@@ -1,6 +1,7 @@
import 'dart:io';
import 'package:flutter_test/flutter_test.dart';
import 'package:gel_rule_app/backend/models/content_provider_config.dart';
import 'package:gel_rule_app/backend/models/post.dart';
import 'package:gel_rule_app/backend/repositories/collection_repository.dart';
import 'package:gel_rule_app/backend/repositories/favorite_repository.dart';
@@ -73,11 +74,52 @@ void main() {
'e621',
'e926',
'realbooru',
'xbooru',
'cosbooru',
]);
expect(
providers.singleWhere((provider) => provider.id == 'realbooru').enabled,
isFalse,
);
expect(
providers.singleWhere((provider) => provider.id == 'cosbooru').enabled,
isTrue,
);
final xbooru = providers.singleWhere((provider) => provider.id == 'xbooru');
expect(xbooru.enabled, isTrue);
expect(xbooru.baseUrl, 'https://xbooru.com');
expect(xbooru.apiType, 'gelbooru');
final cosbooru =
providers.singleWhere((provider) => provider.id == 'cosbooru');
expect(cosbooru.baseUrl, 'https://cos.lycore.co');
expect(cosbooru.apiType, 'danbooru');
});
test('provider repository migrates old CosBooru config', () async {
final repository = ProviderRepository(databaseService);
final now = DateTime(2026);
await repository.saveProvider(ContentProviderConfig(
id: 'cosbooru',
name: 'CosBooru',
baseUrl: 'https://cos.booru.nl',
apiType: 'gelbooru',
enabled: false,
priority: 99,
timeoutSeconds: 10,
customHeaders: const {},
createdAt: now,
updatedAt: now,
));
await repository.ensureSeedProviders();
final providers = (await repository.getProviders() as Success).data;
final cosbooru =
providers.singleWhere((provider) => provider.id == 'cosbooru');
expect(cosbooru.baseUrl, 'https://cos.lycore.co');
expect(cosbooru.apiType, 'danbooru');
expect(cosbooru.enabled, isTrue);
expect(cosbooru.priority, 9);
});
test('settings saveEnabledProviders updates provider configs', () async {
+37 -1
View File
@@ -5,6 +5,7 @@ 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';
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/provider_factory.dart';
import 'package:gel_rule_app/backend/providers/realbooru_provider.dart';
import 'package:gel_rule_app/backend/repositories/provider_repository.dart';
@@ -205,7 +206,7 @@ void main() {
expect(posts.single.rating, 'unknown');
});
test('seed providers include enabled Realbooru', () {
test('seed providers include CosBooru and no Paheal', () {
final realbooru = ProviderRepository.seedProviders()
.where((provider) => provider.id == 'realbooru')
.single;
@@ -213,6 +214,23 @@ void main() {
expect(realbooru.enabled, isFalse);
expect(realbooru.apiType, 'realbooru');
expect(realbooru.baseUrl, 'https://realbooru.com');
expect(
ProviderRepository.seedProviders()
.where((provider) => provider.id == 'paheal'),
isEmpty,
);
final cosbooru = ProviderRepository.seedProviders()
.where((provider) => provider.id == 'cosbooru')
.single;
final xbooru = ProviderRepository.seedProviders()
.where((provider) => provider.id == 'xbooru')
.single;
expect(xbooru.enabled, isTrue);
expect(xbooru.apiType, 'gelbooru');
expect(xbooru.baseUrl, 'https://xbooru.com');
expect(cosbooru.enabled, isTrue);
expect(cosbooru.apiType, 'danbooru');
expect(cosbooru.baseUrl, 'https://cos.lycore.co');
});
test('provider factory creates Realbooru provider', () {
@@ -232,4 +250,22 @@ void main() {
expect(provider, isA<RealbooruProvider>());
});
test('provider factory creates CosBooru as Danbooru provider', () {
final now = DateTime(2026);
final provider = ProviderFactory().create(ContentProviderConfig(
id: 'cosbooru',
name: 'CosBooru',
baseUrl: 'https://cos.lycore.co',
apiType: 'danbooru',
enabled: true,
priority: 8,
timeoutSeconds: 20,
customHeaders: const {},
createdAt: now,
updatedAt: now,
));
expect(provider, isA<DanbooruProvider>());
});
}