use domain::entities::{AssetStack, StackMemberRole, StackType}; use domain::errors::DomainError; use domain::value_objects::SystemId; #[test] fn new_stack_contains_primary() { let primary = SystemId::new(); let stack = AssetStack::new(StackType::LivePhoto, primary.clone(), SystemId::new()); assert_eq!(stack.members.len(), 1); assert_eq!(stack.members[0].asset_id, primary); assert_eq!(stack.members[0].role, StackMemberRole::PrimaryDisplay); assert_eq!(stack.members[0].sort_order, 0); } #[test] fn add_motion_clip() { let mut stack = AssetStack::new(StackType::LivePhoto, SystemId::new(), SystemId::new()); let clip_id = SystemId::new(); stack.add_member(clip_id.clone(), StackMemberRole::MotionClip).unwrap(); assert_eq!(stack.members.len(), 2); assert_eq!(stack.members[1].asset_id, clip_id); assert_eq!(stack.members[1].sort_order, 1); } #[test] fn cannot_add_duplicate() { let primary = SystemId::new(); let mut stack = AssetStack::new(StackType::LivePhoto, primary.clone(), SystemId::new()); let result = stack.add_member(primary, StackMemberRole::HighResSource); assert!(matches!(result, Err(DomainError::Conflict(_)))); }