mirror of
https://github.com/fluxerapp/fluxer
synced 2026-10-17 21:15:32 +09:00
37 lines
1.4 KiB
Rust
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);
|
|
}
|