lib

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

list.rs (1654B)


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