lib

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

list.rs (1494B)


      1 #[cfg(not(feature = "std"))]
      2 use alloc::{string::String, vec::Vec};
      3 
      4 #[cfg_attr(feature = "dto-bindgen", derive(dto_bindgen::Dto))]
      5 #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
      6 #[derive(Clone, Debug)]
      7 pub struct RadrootsList {
      8     pub content: String,
      9     pub entries: Vec<RadrootsListEntry>,
     10 }
     11 
     12 #[cfg_attr(feature = "dto-bindgen", derive(dto_bindgen::Dto))]
     13 #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
     14 #[derive(Clone, Debug)]
     15 pub struct RadrootsListEntry {
     16     pub tag: String,
     17     pub values: Vec<String>,
     18 }
     19 
     20 #[cfg(test)]
     21 mod tests {
     22     use super::*;
     23     use crate::kinds::{KIND_LIST_READ_WRITE_RELAYS, is_nip51_standard_list_kind};
     24 
     25     #[test]
     26     fn generic_list_model_covers_nip65_relay_entries() {
     27         let list = RadrootsList {
     28             content: String::new(),
     29             entries: vec![
     30                 RadrootsListEntry {
     31                     tag: "r".to_string(),
     32                     values: vec!["wss://read.example".to_string(), "read".to_string()],
     33                 },
     34                 RadrootsListEntry {
     35                     tag: "r".to_string(),
     36                     values: vec!["wss://write.example".to_string(), "write".to_string()],
     37                 },
     38             ],
     39         };
     40 
     41         assert_eq!(list.entries.len(), 2);
     42         assert_eq!(list.entries[0].tag, "r");
     43         assert_eq!(list.entries[0].values[1], "read");
     44         assert!(is_nip51_standard_list_kind(KIND_LIST_READ_WRITE_RELAYS));
     45     }
     46 }