app: add sidecar sync commands (export, detect, import, resolve, full export/import)

This commit is contained in:
2026-05-31 05:29:03 +02:00
parent d1394ce7bb
commit 4b31a0f74b
43 changed files with 1685 additions and 6 deletions

View File

@@ -0,0 +1,61 @@
use std::sync::Arc;
use application::testing::InMemoryPluginRepository;
use application::processing::{ManagePluginCommand, ManagePluginHandler, PluginAction};
use domain::entities::{Plugin, PluginType};
use domain::ports::PluginRepository;
use domain::value_objects::StructuredData;
#[tokio::test]
async fn creates_plugin() {
let plugin_repo = Arc::new(InMemoryPluginRepository::new());
let handler = ManagePluginHandler::new(plugin_repo.clone());
let plugin = handler.execute(ManagePluginCommand {
plugin_id: None,
action: PluginAction::Create {
name: "EXIF Extractor".into(),
plugin_type: PluginType::MediaProcessor,
config: StructuredData::new(),
},
}).await.unwrap();
assert_eq!(plugin.name, "EXIF Extractor");
assert_eq!(plugin.plugin_type, PluginType::MediaProcessor);
assert!(plugin.is_enabled);
let saved = plugin_repo.find_by_id(&plugin.plugin_id).await.unwrap();
assert!(saved.is_some());
}
#[tokio::test]
async fn enables_plugin() {
let plugin_repo = Arc::new(InMemoryPluginRepository::new());
let mut plugin = Plugin::new("Test", PluginType::ScheduledTask);
plugin.disable();
let plugin_id = plugin.plugin_id;
plugin_repo.save(&plugin).await.unwrap();
let handler = ManagePluginHandler::new(plugin_repo.clone());
let result = handler.execute(ManagePluginCommand {
plugin_id: Some(plugin_id),
action: PluginAction::Enable,
}).await.unwrap();
assert!(result.is_enabled);
}
#[tokio::test]
async fn disables_plugin() {
let plugin_repo = Arc::new(InMemoryPluginRepository::new());
let plugin = Plugin::new("Test", PluginType::SidecarWriter);
let plugin_id = plugin.plugin_id;
plugin_repo.save(&plugin).await.unwrap();
let handler = ManagePluginHandler::new(plugin_repo.clone());
let result = handler.execute(ManagePluginCommand {
plugin_id: Some(plugin_id),
action: PluginAction::Disable,
}).await.unwrap();
assert!(!result.is_enabled);
}