feat: swipeable media pager, favorite artists, optimized video preview, Gitea updates and v2.0.2 release
This commit is contained in:
@@ -82,16 +82,9 @@ void main() {
|
||||
expect(providers.map((provider) => provider.id), [
|
||||
'gelbooru',
|
||||
'rule34',
|
||||
'safebooru',
|
||||
'konachan',
|
||||
'yandere',
|
||||
'realbooru',
|
||||
'e621',
|
||||
'e926',
|
||||
'realbooru',
|
||||
'xbooru',
|
||||
'paheal',
|
||||
'kemono',
|
||||
'coomer',
|
||||
'pawchive',
|
||||
]);
|
||||
final pawchive =
|
||||
@@ -104,21 +97,13 @@ void main() {
|
||||
expect(realbooru.enabled, isTrue);
|
||||
expect(realbooru.apiType, 'realbooru_html');
|
||||
expect(realbooru.baseUrl, 'https://realbooru.com');
|
||||
expect(providers.where((provider) => provider.id == 'cosbooru'), isEmpty);
|
||||
final xbooru = providers.singleWhere((provider) => provider.id == 'xbooru');
|
||||
expect(xbooru.enabled, isTrue);
|
||||
expect(xbooru.baseUrl, 'https://xbooru.com');
|
||||
expect(xbooru.apiType, 'gelbooru');
|
||||
final paheal = providers.singleWhere((provider) => provider.id == 'paheal');
|
||||
expect(paheal.enabled, isTrue);
|
||||
expect(paheal.baseUrl, 'https://rule34.paheal.net');
|
||||
expect(paheal.apiType, 'paheal');
|
||||
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');
|
||||
expect(providers.where((provider) => provider.id == 'safebooru'), isEmpty);
|
||||
expect(providers.where((provider) => provider.id == 'konachan'), isEmpty);
|
||||
expect(providers.where((provider) => provider.id == 'yandere'), isEmpty);
|
||||
expect(providers.where((provider) => provider.id == 'xbooru'), isEmpty);
|
||||
expect(providers.where((provider) => provider.id == 'paheal'), isEmpty);
|
||||
expect(providers.where((provider) => provider.id == 'kemono'), isEmpty);
|
||||
expect(providers.where((provider) => provider.id == 'coomer'), isEmpty);
|
||||
});
|
||||
|
||||
test('provider repository disables old CosBooru config without deleting it',
|
||||
@@ -157,11 +142,11 @@ void main() {
|
||||
providerRepository: providerRepository,
|
||||
);
|
||||
|
||||
await service.saveEnabledProviders(['safebooru']);
|
||||
await service.saveEnabledProviders(['realbooru']);
|
||||
final providers = (await providerRepository.getProviders() as Success).data;
|
||||
|
||||
expect(
|
||||
providers.singleWhere((provider) => provider.id == 'safebooru').enabled,
|
||||
providers.singleWhere((provider) => provider.id == 'realbooru').enabled,
|
||||
isTrue);
|
||||
expect(
|
||||
providers.singleWhere((provider) => provider.id == 'gelbooru').enabled,
|
||||
|
||||
@@ -231,13 +231,13 @@ void main() {
|
||||
expect(posts.single.rating, 'unknown');
|
||||
});
|
||||
|
||||
test('seed providers include Realbooru HTML Paheal and exclude CosBooru', () {
|
||||
final paheal = ProviderRepository.seedProviders()
|
||||
.where((provider) => provider.id == 'paheal')
|
||||
test('seed providers include Realbooru HTML Pawchive and exclude deprecated providers', () {
|
||||
final pawchive = ProviderRepository.seedProviders()
|
||||
.where((provider) => provider.id == 'pawchive')
|
||||
.single;
|
||||
expect(paheal.enabled, isTrue);
|
||||
expect(paheal.apiType, 'paheal');
|
||||
expect(paheal.baseUrl, 'https://rule34.paheal.net');
|
||||
expect(pawchive.enabled, isTrue);
|
||||
expect(pawchive.apiType, 'pawchive');
|
||||
expect(pawchive.baseUrl, 'https://pawchive.pw');
|
||||
final realbooru = ProviderRepository.seedProviders()
|
||||
.where((provider) => provider.id == 'realbooru')
|
||||
.single;
|
||||
@@ -249,22 +249,26 @@ void main() {
|
||||
.where((provider) => provider.id == 'cosbooru'),
|
||||
isEmpty,
|
||||
);
|
||||
final xbooru = ProviderRepository.seedProviders()
|
||||
.where((provider) => provider.id == 'xbooru')
|
||||
.single;
|
||||
expect(xbooru.enabled, isTrue);
|
||||
expect(xbooru.apiType, 'gelbooru');
|
||||
expect(xbooru.baseUrl, 'https://xbooru.com');
|
||||
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');
|
||||
expect(
|
||||
ProviderRepository.seedProviders()
|
||||
.where((provider) => provider.id == 'paheal'),
|
||||
isEmpty,
|
||||
);
|
||||
expect(
|
||||
ProviderRepository.seedProviders()
|
||||
.where((provider) => provider.id == 'xbooru'),
|
||||
isEmpty,
|
||||
);
|
||||
expect(
|
||||
ProviderRepository.seedProviders()
|
||||
.where((provider) => provider.id == 'kemono'),
|
||||
isEmpty,
|
||||
);
|
||||
expect(
|
||||
ProviderRepository.seedProviders()
|
||||
.where((provider) => provider.id == 'coomer'),
|
||||
isEmpty,
|
||||
);
|
||||
});
|
||||
|
||||
test('provider factory treats Realbooru api type as unsupported', () {
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
import 'package:dio/dio.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:gel_rule_app/backend/models/app_update_info.dart';
|
||||
import 'package:gel_rule_app/backend/services/settings_service.dart';
|
||||
import 'package:gel_rule_app/backend/services/update_service.dart';
|
||||
import 'package:gel_rule_app/core/database/database_service.dart';
|
||||
|
||||
void main() {
|
||||
test('UpdateService parses Gitea release JSON correctly', () {
|
||||
final service = UpdateService(Dio(), SettingsService(_MockDatabaseService()));
|
||||
|
||||
// Use reflection or constructor to test info
|
||||
final info = AppUpdateInfo(
|
||||
version: '2.0.2',
|
||||
tagName: 'v2.0.2',
|
||||
name: 'Lunaris 2.0.2',
|
||||
body: 'Release notes',
|
||||
htmlUrl: 'https://gitea.rardogsynapse.online/RarDog/Lunaris/releases/tag/v2.0.2',
|
||||
publishedAt: DateTime.parse('2026-09-03T18:00:00Z'),
|
||||
apkUrl: 'https://gitea.rardogsynapse.online/attachments/apk',
|
||||
linuxTarGzUrl: 'https://gitea.rardogsynapse.online/attachments/linux',
|
||||
);
|
||||
|
||||
expect(info.hasAssets, isTrue);
|
||||
expect(info.apkUrl, contains('apk'));
|
||||
expect(info.linuxTarGzUrl, contains('linux'));
|
||||
expect(
|
||||
service.assetFileName(info, 'https://gitea.rardogsynapse.online/attachments/Lunaris-v2.0.2.apk'),
|
||||
'Lunaris-v2.0.2.apk',
|
||||
);
|
||||
expect(
|
||||
service.assetFileName(info, info.apkUrl!),
|
||||
'Lunaris-v2.0.2-linux-x64.tar.gz',
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
class _MockDatabaseService implements DatabaseService {
|
||||
@override
|
||||
dynamic noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
|
||||
}
|
||||
Reference in New Issue
Block a user