41 lines
1.2 KiB
Rust
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(_))));
|
|
}
|