rubot/tests/tier4.rs
2026-07-29 19:42:36 +00:00

50 lines
1.9 KiB
Rust

use rustbot::bot::modules::crypto::format_ticker;
use rustbot::bot::modules::define::format_define;
use rustbot::bot::modules::down::host_of;
use rustbot::bot::modules::urban::format_urban;
use rustbot::bot::modules::wiki::{format_summary, pick_title};
#[test]
fn crypto_formats_ticker() {
let body = r#"{"last":"63836.11","high":"64658.00","low":"63477.46","volume":"1032.2"}"#;
let out = format_ticker("btc", body);
assert!(out.contains("BTC/USD: $63836.11"), "{out}");
assert!(out.contains("high $64658.00"), "{out}");
assert!(out.contains("low $63477.46"), "{out}");
}
#[test]
fn wiki_picks_title_and_formats_summary() {
let os = r#"["Rust programming",["Rust (programming language)"],[""],["https://en.wikipedia.org/wiki/Rust_(programming_language)"]]"#;
assert_eq!(
pick_title(os).as_deref(),
Some("Rust (programming language)")
);
let sum = r#"{"title":"Rust (programming language)","extract":"Rust is a language."}"#;
assert_eq!(
format_summary(sum),
"Rust (programming language) — Rust is a language."
);
}
#[test]
fn define_formats_first_meaning() {
let body = r#"[{"word":"hello","meanings":[{"partOfSpeech":"noun","definitions":[{"definition":"a greeting"}]}]}]"#;
assert_eq!(format_define("hello", body), "hello (noun): a greeting");
}
#[test]
fn urban_formats_and_strips_brackets() {
let body = "{\"list\":[{\"word\":\"irc\",\"definition\":\"[Internet] Relay\\r\\nChat\"}]}";
let out = format_urban("irc", body);
assert!(out.starts_with("irc: Internet Relay"), "{out}");
assert!(!out.contains('['), "{out}");
}
#[test]
fn down_parses_host() {
assert_eq!(host_of("https://example.com/path?x=1"), "example.com");
assert_eq!(host_of("example.com:8080"), "example.com");
assert_eq!(host_of("user@host.net"), "host.net");
assert_eq!(host_of("//foo.org/"), "foo.org");
}