use crate::channels::commands::{ChannelCommand, handle_command};
use crate::tests::agent_service_mocks::create_test_service_full;
#[tokio::test]
async fn models_resolves_with_trailing_image_marker() {
let (agent, svc, sid) = create_test_service_full().await;
let text = "/models\n<<IMG:/tmp/photo--100-123.jpg>>";
let cmd = handle_command(text, sid, &agent, &svc, true, None).await;
assert!(
matches!(cmd, ChannelCommand::Models(_)),
"/models with an appended <<IMG:>> marker must still open the picker, got {:?}",
std::mem::discriminant(&cmd)
);
}
#[tokio::test]
async fn models_resolves_with_botname_and_image_marker() {
let (agent, svc, sid) = create_test_service_full().await;
let text = "/models@opencrabsbot\n<<IMG:/tmp/photo--100-123.jpg>>";
let cmd = handle_command(text, sid, &agent, &svc, true, None).await;
assert!(
matches!(cmd, ChannelCommand::Models(_)),
"/models@bot with an appended <<IMG:>> marker must still open the picker, got {:?}",
std::mem::discriminant(&cmd)
);
}
#[tokio::test]
async fn command_with_argument_and_image_marker_keeps_argument() {
let (agent, svc, sid) = create_test_service_full().await;
let text = "/model groq/llama-3.3-70b\n<<IMG:/tmp/photo--100-123.jpg>>";
let cmd = handle_command(text, sid, &agent, &svc, true, None).await;
assert!(
matches!(cmd, ChannelCommand::ModelSwitched(_)),
"/model <arg> with an appended marker must switch the model, got {:?}",
std::mem::discriminant(&cmd)
);
}