use std::sync::Arc; use application::testing::InMemoryAlbumRepository; use application::use_cases::CreateAlbum; use domain::errors::DomainError; use domain::value_objects::SystemId; #[tokio::test] async fn creates_album() { let repo = Arc::new(InMemoryAlbumRepository::new()); let uc = CreateAlbum::new(repo); let creator = SystemId::new(); let album = uc.execute("Vacation 2024", creator).await.unwrap(); assert_eq!(album.title, "Vacation 2024"); assert_eq!(album.creator_user_id, creator); assert_eq!(album.asset_count(), 0); } #[tokio::test] async fn rejects_empty_title() { let repo = Arc::new(InMemoryAlbumRepository::new()); let uc = CreateAlbum::new(repo); let result = uc.execute("", SystemId::new()).await; assert!(matches!(result, Err(DomainError::Validation(_)))); }