From 75f37708b3b1f6a89e0f5488c95618a07356f166 Mon Sep 17 00:00:00 2001 From: Michael Mallan Date: Fri, 2 May 2025 13:02:08 +0100 Subject: [PATCH] test: implement methods for getting/setting labels --- lianad/src/testutils.rs | 30 ++++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/lianad/src/testutils.rs b/lianad/src/testutils.rs index 2f4a11ba..5b24aeb8 100644 --- a/lianad/src/testutils.rs +++ b/lianad/src/testutils.rs @@ -152,6 +152,7 @@ struct DummyDbState { coins: HashMap, txs: HashMap, spend_txs: HashMap)>, + labels: HashMap, timestamp: u32, rescan_timestamp: Option, last_poll_timestamp: Option, @@ -186,6 +187,7 @@ impl DummyDatabase { coins: HashMap::new(), txs: HashMap::new(), spend_txs: HashMap::new(), + labels: HashMap::new(), timestamp: now, rescan_timestamp: None, last_poll_timestamp: None, @@ -438,12 +440,32 @@ impl DatabaseConnection for DummyDatabase { self.db.write().unwrap().last_poll_timestamp = Some(timestamp); } - fn update_labels(&mut self, _items: &HashMap>) { - todo!() + fn update_labels(&mut self, items: &HashMap>) { + for (lab_item, lab_val) in items { + if let Some(val) = lab_val { + self.db + .write() + .unwrap() + .labels + .insert(lab_item.clone(), val.clone()); + } else { + self.db.write().unwrap().labels.remove_entry(lab_item); + } + } } - fn labels(&mut self, _items: &HashSet) -> HashMap { - todo!() + fn labels(&mut self, items: &HashSet) -> HashMap { + self.db + .read() + .unwrap() + .labels + .iter() + .filter_map(|(lab_item, lab_val)| { + items + .contains(lab_item) + .then_some((lab_item.to_string(), lab_val.clone())) + }) + .collect() } fn list_txids(&mut self, start: u32, end: u32, limit: u64) -> Vec {