bsv_wallet_toolbox/monitor/tasks/
task_sync_when_idle.rs1use async_trait::async_trait;
7
8use crate::error::WalletError;
9use crate::monitor::task_trait::WalletMonitorTask;
10
11pub struct TaskSyncWhenIdle;
15
16impl TaskSyncWhenIdle {
17 pub fn new() -> Self {
19 Self
20 }
21}
22
23#[async_trait]
24impl WalletMonitorTask for TaskSyncWhenIdle {
25 fn name(&self) -> &str {
26 "SyncWhenIdle"
27 }
28
29 fn trigger(&mut self, _now_msecs: u64) -> bool {
30 false
31 }
32
33 async fn run_task(&mut self) -> Result<String, WalletError> {
34 Ok("sync not implemented".to_string())
35 }
36}
37
38#[cfg(test)]
39mod tests {
40 use super::*;
41
42 #[test]
43 fn test_sync_when_idle_never_triggers() {
44 let mut task = TaskSyncWhenIdle::new();
45 assert!(!task.trigger(0));
46 assert!(!task.trigger(u64::MAX));
47 }
48
49 #[tokio::test]
50 async fn test_sync_when_idle_run_task() {
51 let mut task = TaskSyncWhenIdle::new();
52 let result = task.run_task().await.unwrap();
53 assert_eq!(result, "sync not implemented");
54 }
55
56 #[test]
57 fn test_name() {
58 let task = TaskSyncWhenIdle::new();
59 assert_eq!(task.name(), "SyncWhenIdle");
60 }
61}