use std::sync::Arc;
use parking_lot::RwLock;
use crate::host::{PluginHandle, PluginSdkConfig};
use crate::mock::stubs::*;
use crate::platform::capabilities::PlatformCapabilities;
use crate::services::icon::icon_cache::IconCacheService;
use crate::services::resource::AppResourceService;
use crate::services::timer::TokioTimerManager;
use std::collections::HashSet;
pub fn mock_plugin_handle() -> Arc<PluginHandle> {
let icon_cache = IconCacheService::new("mock_cache".to_string());
let storage: Arc<dyn crate::services::storage::storage_service::StorageService> =
Arc::new(StubStorageService);
Arc::new(PluginHandle::new(
"__mock__".to_string(),
PluginSdkConfig::default(),
PlatformCapabilities::new(HashSet::new()),
Arc::new(StubThemeProvider),
Arc::new(RwLock::new("light".to_string())),
Arc::new(StubIconExtractor),
Arc::new(icon_cache),
Arc::new(StubShellExecutor::default()),
Arc::new(StubWindowManager),
Arc::new(StubPathResolver),
Arc::new(StubAppEnumerator),
Arc::new(StubAppLauncher),
Arc::new(StubLnkResolver),
Arc::new(StubResourceLoader),
Arc::new(StubParameterResolver),
Arc::new(TokioTimerManager::new()),
Arc::new(AppResourceService::new("mock_icons".to_string())),
Arc::new(RwLock::new(storage)),
Arc::new(StubHotkeyManager),
Arc::new(StubInstallationMonitor),
Arc::new(StubFocusMonitor),
Arc::new(StubClipboardManager),
Arc::new(StubModelService),
))
}