domain: add Sharing entities and ports (ShareScope, ShareTarget, ShareLink, InviteCode, VisibilityFilter)
This commit is contained in:
@@ -13,3 +13,5 @@ mod derivative_asset;
|
||||
mod duplicate;
|
||||
mod album;
|
||||
mod tag;
|
||||
mod share_scope;
|
||||
mod share_link;
|
||||
|
||||
25
crates/domain/tests/entities/share_link.rs
Normal file
25
crates/domain/tests/entities/share_link.rs
Normal file
@@ -0,0 +1,25 @@
|
||||
use domain::entities::{LinkAccessLevel, ShareLink};
|
||||
use domain::value_objects::SystemId;
|
||||
|
||||
#[test]
|
||||
fn new_link_is_valid() {
|
||||
let link = ShareLink::new(SystemId::new(), "tok123", LinkAccessLevel::ViewOnly);
|
||||
assert!(link.is_valid());
|
||||
assert_eq!(link.use_count, 0);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn deactivated_invalid() {
|
||||
let mut link = ShareLink::new(SystemId::new(), "tok123", LinkAccessLevel::ViewOnly);
|
||||
link.deactivate();
|
||||
assert!(!link.is_valid());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn max_uses_exhausted() {
|
||||
let mut link = ShareLink::new(SystemId::new(), "tok123", LinkAccessLevel::ViewOnly);
|
||||
link.max_uses = Some(2);
|
||||
link.record_use();
|
||||
link.record_use();
|
||||
assert!(!link.is_valid());
|
||||
}
|
||||
16
crates/domain/tests/entities/share_scope.rs
Normal file
16
crates/domain/tests/entities/share_scope.rs
Normal file
@@ -0,0 +1,16 @@
|
||||
use chrono::{Duration, Utc};
|
||||
use domain::entities::{ScopeType, ShareScope, ShareableType};
|
||||
use domain::value_objects::{DateTimeStamp, SystemId};
|
||||
|
||||
#[test]
|
||||
fn not_expired_when_no_expiry() {
|
||||
let scope = ShareScope::new(ScopeType::Link, ShareableType::Album, SystemId::new(), SystemId::new());
|
||||
assert!(!scope.is_expired());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn expired_when_past() {
|
||||
let mut scope = ShareScope::new(ScopeType::Link, ShareableType::Album, SystemId::new(), SystemId::new());
|
||||
scope.expires_at = Some(DateTimeStamp::from_datetime(Utc::now() - Duration::hours(1)));
|
||||
assert!(scope.is_expired());
|
||||
}
|
||||
Reference in New Issue
Block a user