fix(metadata): support extension custom search

This commit is contained in:
zarzet
2026-07-30 15:36:31 +07:00
parent d85c8f6a17
commit 3e41aa0eee
6 changed files with 102 additions and 54 deletions
+2
View File
@@ -173,6 +173,8 @@ void main() {
]),
'songs',
);
expect(extension.searchBehavior?.filterIdForKind('track'), 'songs');
expect(extension.searchBehavior?.filterIdForKind('album'), 'records');
expect(
HomeSearchProviderPolicy.displayFilterSelection(
null,
+26
View File
@@ -104,4 +104,30 @@ void main() {
});
expect(results.single['provider_id'], 'selected-metadata');
});
test('metadata custom search sends the manifest track filter', () async {
MethodCall? capturedCall;
TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger
.setMockMethodCallHandler(backendChannel, (call) async {
capturedCall = call;
return jsonEncode([
{'id': 'track-1', 'name': 'Song', 'provider_id': 'custom-metadata'},
]);
});
final results = await PlatformBridge.customSearchWithExtension(
'custom-metadata',
'Song Artist',
options: {'limit': 5, 'filter': 'songs'},
);
expect(capturedCall?.method, 'customSearchWithExtension');
final arguments = capturedCall?.arguments as Map<Object?, Object?>?;
expect(arguments, isNotNull);
expect(arguments?['extension_id'], 'custom-metadata');
expect(arguments?['query'], 'Song Artist');
expect(arguments?['options'], jsonEncode({'limit': 5, 'filter': 'songs'}));
expect(arguments?['request_id'], isA<String>());
expect(results.single['provider_id'], 'custom-metadata');
});
}