Files
movies-diary/crates/application/tests/services/services_test.rs
Gabriel Kaszewski 017b58d6fa
Some checks failed
CI / Check / Test (push) Has been cancelled
code refactor
Reviewed-on: #26
2026-10-26 09:36:23 +00:00

40 lines
1.3 KiB
Rust

use crate::support::NoopReviewLogger;
use application::services::Services;
use domain::testing::{
FakeAuthService, FakeDocumentParser, FakeMetadataClient, FakePasswordHasher, FakePosterFetcher,
NoopEventPublisher, NoopObjectStorage, PanicDiaryExporter,
};
use std::sync::Arc;
#[test]
fn services_clone_shares_the_same_port_instances() {
let logger: Arc<dyn application::ports::ReviewLogger> = Arc::new(NoopReviewLogger);
let s = Services {
review_logger: Arc::clone(&logger),
person_enrichment: None,
auth: Arc::new(FakeAuthService),
password_hasher: Arc::new(FakePasswordHasher),
metadata: Arc::new(FakeMetadataClient),
poster_fetcher: Arc::new(FakePosterFetcher),
object_storage: Arc::new(NoopObjectStorage),
event_publisher: NoopEventPublisher::new(),
diary_exporter: Arc::new(PanicDiaryExporter),
document_parser: Arc::new(FakeDocumentParser),
};
let cloned = s.clone();
assert!(
Arc::ptr_eq(&s.review_logger, &cloned.review_logger),
"Clone must share port instances, not duplicate them"
);
assert!(
Arc::ptr_eq(&s.review_logger, &logger),
"the field must hold the Arc it was given"
);
assert!(
cloned.person_enrichment.is_none(),
"optional ports must survive Clone as None"
);
}