lib

Core libraries for Radroots
git clone https://radroots.dev/git/lib.git
Log | Files | Refs | README

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 }