mod.rs (1906B)
1 pub mod decode; 2 pub mod encode; 3 4 use radroots_event::envelope::kind::{ 5 KIND_CALENDAR, is_nip51_list_set_kind, is_nip51_standard_list_kind, 6 }; 7 8 pub(crate) fn is_generic_list_codec_kind(kind: u32) -> bool { 9 is_nip51_standard_list_kind(kind) || (is_nip51_list_set_kind(kind) && kind != KIND_CALENDAR) 10 } 11 12 #[cfg(test)] 13 mod tests { 14 use super::{decode::list_from_tags, encode::list_build_tags, is_generic_list_codec_kind}; 15 use radroots_event::{ 16 envelope::kind::{KIND_CALENDAR, KIND_LIST_MUTE, KIND_LIST_SET_FOLLOW, KIND_POST}, 17 social::list::{List, ListEntry}, 18 }; 19 20 #[test] 21 fn list_tags_round_trip() { 22 let list = List { 23 content: "private".to_string(), 24 entries: vec![ 25 ListEntry { 26 tag: "p".to_string(), 27 values: vec!["abc".to_string(), "wss://relay".to_string()], 28 }, 29 ListEntry { 30 tag: "t".to_string(), 31 values: vec!["radroots".to_string()], 32 }, 33 ], 34 }; 35 let tags = list_build_tags(&list).expect("build tags"); 36 let parsed = 37 list_from_tags(KIND_LIST_MUTE, list.content.clone(), &tags).expect("parse list"); 38 assert_eq!(parsed.content, list.content); 39 assert_eq!(parsed.entries.len(), list.entries.len()); 40 assert_eq!(parsed.entries[0].tag, "p"); 41 assert_eq!(parsed.entries[0].values[0], "abc"); 42 assert_eq!(parsed.entries[1].tag, "t"); 43 assert_eq!(parsed.entries[1].values[0], "radroots"); 44 } 45 46 #[test] 47 fn generic_list_codec_kind_excludes_calendar() { 48 assert!(is_generic_list_codec_kind(KIND_LIST_MUTE)); 49 assert!(is_generic_list_codec_kind(KIND_LIST_SET_FOLLOW)); 50 assert!(!is_generic_list_codec_kind(KIND_CALENDAR)); 51 assert!(!is_generic_list_codec_kind(KIND_POST)); 52 } 53 }