Files
k-photos/crates/application/tests/identity/queries/get_profile.rs

41 lines
1.2 KiB
Rust

use application::identity::{
GetProfileHandler, GetProfileQuery, RegisterUserCommand, RegisterUserHandler,
};
use application::testing::{InMemoryUserRepository, StubPasswordHasher};
use domain::errors::DomainError;
use domain::value_objects::SystemId;
use std::sync::Arc;
#[tokio::test]
async fn returns_existing_user() {
let repo = Arc::new(InMemoryUserRepository::new());
let reg = RegisterUserHandler::new(repo.clone(), Arc::new(StubPasswordHasher));
let user = reg
.execute(RegisterUserCommand {
username: "alice".into(),
email: "alice@example.com".into(),
password: "password123".into(),
})
.await
.unwrap();
let handler = GetProfileHandler::new(repo);
let found = handler
.execute(GetProfileQuery { user_id: user.id })
.await
.unwrap();
assert_eq!(found.username, "alice");
}
#[tokio::test]
async fn returns_not_found_for_missing_user() {
let repo = Arc::new(InMemoryUserRepository::new());
let handler = GetProfileHandler::new(repo);
let result = handler
.execute(GetProfileQuery {
user_id: SystemId::new(),
})
.await;
assert!(matches!(result, Err(DomainError::NotFound(_))));
}