use super::*;
use crate::domain::SessionId;
use crate::test_support::MockError;
use crate::test_support::MockSessionRepository;
#[test]
fn test_keystroke_usecase_returns_error_when_no_active_session() {
let repo = Arc::new(MockSessionRepository::new());
let usecase = KeystrokeUseCaseImpl::new(repo);
let input = KeystrokeInput {
session_id: None,
key: "Enter".to_string(),
};
let result = usecase.execute(input);
assert!(matches!(result, Err(SessionError::NoActiveSession)));
}
#[test]
fn test_keystroke_usecase_returns_error_when_session_not_found() {
let repo = Arc::new(
MockSessionRepository::builder()
.with_resolve_error(MockError::NotFound("missing".to_string()))
.build(),
);
let usecase = KeystrokeUseCaseImpl::new(repo);
let input = KeystrokeInput {
session_id: Some(SessionId::try_new("missing").expect("valid session id")),
key: "Tab".to_string(),
};
let result = usecase.execute(input);
assert!(matches!(result, Err(SessionError::NotFound(_))));
}
#[test]
fn test_type_usecase_returns_error_when_no_active_session() {
let repo = Arc::new(MockSessionRepository::new());
let usecase = TypeUseCaseImpl::new(repo);
let input = TypeInput {
session_id: None,
text: "hello world".to_string(),
};
let result = usecase.execute(input);
assert!(matches!(result, Err(SessionError::NoActiveSession)));
}
#[test]
fn test_type_usecase_returns_error_when_session_not_found() {
let repo = Arc::new(
MockSessionRepository::builder()
.with_resolve_error(MockError::NotFound("missing".to_string()))
.build(),
);
let usecase = TypeUseCaseImpl::new(repo);
let input = TypeInput {
session_id: Some(SessionId::try_new("missing").expect("valid session id")),
text: "test text".to_string(),
};
let result = usecase.execute(input);
assert!(matches!(result, Err(SessionError::NotFound(_))));
}
#[test]
fn test_keydown_usecase_returns_error_when_no_active_session() {
let repo = Arc::new(MockSessionRepository::new());
let usecase = KeydownUseCaseImpl::new(repo);
let input = KeydownInput {
session_id: None,
key: "Ctrl".to_string(),
};
let result = usecase.execute(input);
assert!(matches!(result, Err(SessionError::NoActiveSession)));
}
#[test]
fn test_keydown_usecase_returns_error_when_session_not_found() {
let repo = Arc::new(
MockSessionRepository::builder()
.with_resolve_error(MockError::NotFound("missing".to_string()))
.build(),
);
let usecase = KeydownUseCaseImpl::new(repo);
let input = KeydownInput {
session_id: Some(SessionId::try_new("missing").expect("valid session id")),
key: "Shift".to_string(),
};
let result = usecase.execute(input);
assert!(matches!(result, Err(SessionError::NotFound(_))));
}
#[test]
fn test_keyup_usecase_returns_error_when_no_active_session() {
let repo = Arc::new(MockSessionRepository::new());
let usecase = KeyupUseCaseImpl::new(repo);
let input = KeyupInput {
session_id: None,
key: "Ctrl".to_string(),
};
let result = usecase.execute(input);
assert!(matches!(result, Err(SessionError::NoActiveSession)));
}
#[test]
fn test_keyup_usecase_returns_error_when_session_not_found() {
let repo = Arc::new(
MockSessionRepository::builder()
.with_resolve_error(MockError::NotFound("missing".to_string()))
.build(),
);
let usecase = KeyupUseCaseImpl::new(repo);
let input = KeyupInput {
session_id: Some(SessionId::try_new("missing").expect("valid session id")),
key: "Alt".to_string(),
};
let result = usecase.execute(input);
assert!(matches!(result, Err(SessionError::NotFound(_))));
}