use application::storage::{RegisterVolumeCommand, RegisterVolumeHandler}; use application::testing::InMemoryStorageVolumeRepository; use domain::errors::DomainError; use std::sync::Arc; #[tokio::test] async fn creates_volume() { let repo = Arc::new(InMemoryStorageVolumeRepository::new()); let handler = RegisterVolumeHandler::new(repo); let vol = handler .execute(RegisterVolumeCommand { volume_name: "primary".into(), uri_prefix: "file:///data".into(), is_writable: true, }) .await .unwrap(); assert_eq!(vol.volume_name, "primary"); assert_eq!(vol.uri_prefix, "file:///data"); assert!(vol.is_writable); } #[tokio::test] async fn rejects_empty_name() { let repo = Arc::new(InMemoryStorageVolumeRepository::new()); let handler = RegisterVolumeHandler::new(repo); let result = handler .execute(RegisterVolumeCommand { volume_name: "".into(), uri_prefix: "file:///data".into(), is_writable: true, }) .await; assert!(matches!(result, Err(DomainError::Validation(_)))); }