domain: add Media Catalog entities (Asset, Metadata, Stack, Derivative, Duplicate)
This commit is contained in:
31
crates/domain/tests/entities/asset_stack.rs
Normal file
31
crates/domain/tests/entities/asset_stack.rs
Normal file
@@ -0,0 +1,31 @@
|
||||
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(_))));
|
||||
}
|
||||
Reference in New Issue
Block a user