inline_code()"),
"expected : {html}"
);
}
#[test]
fn markdown_to_html_code_block() {
let html = markdown_to_html("```rust\nfn main() {}\n```");
assert!(html.contains(""), "expected : {html}");
assert!(html.contains(" inside pre: {html}");
assert!(
html.contains("fn main() {}"),
"expected code content: {html}"
);
}
#[test]
fn markdown_to_html_plain_text_passthrough() {
let html = markdown_to_html("Hello, world!");
assert!(
html.contains("Hello, world!"),
"expected plain text passthrough: {html}"
);
}
#[test]
fn markdown_to_html_single_newline_prose_becomes_paragraphs() {
// Single newlines between prose sentences should produce separate paragraphs.
let html = markdown_to_html("Sentence one.\nSentence two.");
assert!(
html.contains("Sentence one.
"),
"expected separate paragraph for first sentence: {html}"
);
assert!(
html.contains("Sentence two.
"),
"expected separate paragraph for second sentence: {html}"
);
}
#[test]
fn startup_announcement_uses_bot_name() {
assert_eq!(format_startup_announcement("Timmy"), "Timmy is online.");
}
#[test]
fn startup_announcement_uses_configured_display_name_not_hardcoded() {
assert_eq!(format_startup_announcement("HAL"), "HAL is online.");
assert_eq!(format_startup_announcement("Assistant"), "Assistant is online.");
}
#[test]
fn bot_name_defaults_to_assistant_when_display_name_absent() {
// When display_name is not set in bot.toml, bot_name should be "Assistant".
// This mirrors the logic in run_bot: config.display_name.clone().unwrap_or_else(...)
fn resolve_bot_name(display_name: Option) -> String {
display_name.unwrap_or_else(|| "Assistant".to_string())
}
assert_eq!(resolve_bot_name(None), "Assistant");
assert_eq!(resolve_bot_name(Some("Timmy".to_string())), "Timmy");
}
}