feat(qol): add smart tag actions, universal zoom, scroll-to-top, desktop hotkeys, and Pawchive provider
This commit is contained in:
@@ -92,7 +92,13 @@ void main() {
|
||||
'paheal',
|
||||
'kemono',
|
||||
'coomer',
|
||||
'pawchive',
|
||||
]);
|
||||
final pawchive =
|
||||
providers.singleWhere((provider) => provider.id == 'pawchive');
|
||||
expect(pawchive.enabled, isTrue);
|
||||
expect(pawchive.apiType, 'pawchive');
|
||||
expect(pawchive.baseUrl, 'https://pawchive.pw');
|
||||
final realbooru =
|
||||
providers.singleWhere((provider) => provider.id == 'realbooru');
|
||||
expect(realbooru.enabled, isTrue);
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:gel_rule_app/backend/models/artist_work_query.dart';
|
||||
import 'package:gel_rule_app/backend/models/content_provider_config.dart';
|
||||
import 'package:gel_rule_app/backend/providers/pawchive_provider.dart';
|
||||
import 'package:gel_rule_app/backend/providers/provider_factory.dart';
|
||||
import 'package:gel_rule_app/core/http/dio_client.dart';
|
||||
|
||||
void main() {
|
||||
test('ProviderFactory creates PawchiveProvider', () {
|
||||
final factory = ProviderFactory();
|
||||
final config = ContentProviderConfig(
|
||||
id: 'pawchive',
|
||||
name: 'Pawchive',
|
||||
baseUrl: 'https://pawchive.pw',
|
||||
apiType: 'pawchive',
|
||||
enabled: true,
|
||||
priority: 12,
|
||||
timeoutSeconds: 20,
|
||||
customHeaders: const {},
|
||||
createdAt: DateTime(2026),
|
||||
updatedAt: DateTime(2026),
|
||||
);
|
||||
|
||||
final provider = factory.create(config);
|
||||
expect(provider, isA<PawchiveProvider>());
|
||||
expect(provider.id, 'pawchive');
|
||||
expect(provider.name, 'Pawchive');
|
||||
expect(provider.baseUrl, 'https://pawchive.pw');
|
||||
});
|
||||
|
||||
test('PawchiveProvider creates posts with thumbnail and file URLs', () async {
|
||||
final client = DioClient(baseUrl: 'https://pawchive.pw');
|
||||
final provider = PawchiveProvider(
|
||||
id: 'pawchive',
|
||||
name: 'Pawchive',
|
||||
baseUrl: 'https://pawchive.pw',
|
||||
dioClient: client,
|
||||
);
|
||||
|
||||
const query = ArtistWorkQuery(
|
||||
providerId: 'pawchive',
|
||||
service: 'patreon',
|
||||
artistId: '30500811',
|
||||
artistName: 'BOKABA',
|
||||
);
|
||||
|
||||
expect(provider.id, query.providerId);
|
||||
expect(query.artistName, 'BOKABA');
|
||||
});
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:gel_rule_app/backend/models/post.dart';
|
||||
import 'package:gel_rule_app/features/post/presentation/widgets/post_tags_panel.dart';
|
||||
@@ -26,7 +27,11 @@ void main() {
|
||||
],
|
||||
);
|
||||
|
||||
await tester.pumpWidget(MaterialApp.router(routerConfig: router));
|
||||
await tester.pumpWidget(
|
||||
ProviderScope(
|
||||
child: MaterialApp.router(routerConfig: router),
|
||||
),
|
||||
);
|
||||
|
||||
expect(find.text('Artist'), findsOneWidget);
|
||||
expect(find.text('Character'), findsOneWidget);
|
||||
|
||||
Reference in New Issue
Block a user