Files
fluxer/fluxer_messages/tests/message_response_logic.rs
T

37 lines
1.4 KiB
Rust

// SPDX-License-Identifier: AGPL-3.0-or-later
use fluxer_messages::mention_extractor::extract_mentions_from_markdown;
use fluxer_messages::types::ExtractedMentionsResponse;
#[test]
fn markdown_extractor_keeps_link_text_mentions_but_not_url_mentions() {
let mentions =
extract_mentions_from_markdown(Some("[<@101>](https://example.com/<@202>) <#303>"));
assert!(mentions.users.contains(&101));
assert!(!mentions.users.contains(&202));
assert!(mentions.channels.contains(&303));
}
#[test]
fn extracted_mentions_response_serializes_ids_as_strings() {
let mentions = extract_mentions_from_markdown(Some("<@123456789012345678> <@&999> <#888>"));
let response = ExtractedMentionsResponse::from(mentions);
assert!(response.users.contains(&"123456789012345678".to_owned()));
assert!(response.roles.contains(&"999".to_owned()));
assert!(response.channels.contains(&"888".to_owned()));
let json = serde_json::to_string(&response).unwrap();
assert!(json.contains("\"123456789012345678\""));
assert!(!json.contains("123456789012345678,"));
}
#[test]
fn everyone_and_here_survive_response_conversion() {
let mentions = extract_mentions_from_markdown(Some("@everyone @here <@1>"));
assert!(mentions.everyone);
assert!(mentions.here);
let response = ExtractedMentionsResponse::from(mentions);
assert!(response.everyone);
assert!(response.here);
}