Skip to content

Commit 5a1a629

Browse files
committed
test: Adding test
1 parent 83145f9 commit 5a1a629

File tree

2 files changed

+84
-22
lines changed

2 files changed

+84
-22
lines changed

src/repositories/monitor.rs

Lines changed: 2 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -289,32 +289,12 @@ impl<N: NetworkRepositoryTrait, T: TriggerRepositoryTrait> MonitorRepositoryTrai
289289

290290
let networks = match network_service {
291291
Some(service) => service.get_all(),
292-
None => {
293-
NetworkRepository::new(None)
294-
.map_err(|e| {
295-
RepositoryError::load_error(
296-
"Failed to load networks for monitor validation",
297-
Some(Box::new(e)),
298-
None,
299-
)
300-
})?
301-
.networks
302-
}
292+
None => NetworkRepository::new(None)?.networks,
303293
};
304294

305295
let triggers = match trigger_service {
306296
Some(service) => service.get_all(),
307-
None => {
308-
TriggerRepository::new(None)
309-
.map_err(|e| {
310-
RepositoryError::load_error(
311-
"Failed to load triggers for monitor validation",
312-
Some(Box::new(e)),
313-
None,
314-
)
315-
})?
316-
.triggers
317-
}
297+
None => TriggerRepository::new(None)?.triggers,
318298
};
319299
let monitors = HashMap::from([(monitor.name.clone(), monitor)]);
320300
Self::validate_monitor_references(&monitors, &triggers, &networks)?;

tests/integration/monitor/execution.rs

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -753,3 +753,85 @@ fn test_load_from_path_trait_implementation() {
753753
assert!(monitor.networks.contains(&"ethereum_mainnet".to_string()));
754754
assert!(monitor.triggers.contains(&"test-trigger".to_string()));
755755
}
756+
757+
#[test]
758+
fn test_load_from_path_trait_implementation_error() {
759+
// Setup temporary directory and files
760+
let mock_network_service =
761+
setup_mocked_networks("Ethereum", "ethereum_mainnet", BlockChainType::EVM);
762+
763+
let mut mocked_triggers = HashMap::new();
764+
mocked_triggers.insert("test-trigger".to_string(), create_test_trigger("test"));
765+
let mock_trigger_service = setup_trigger_service(mocked_triggers);
766+
767+
let mut mocked_monitors = HashMap::new();
768+
mocked_monitors.insert(
769+
"monitor".to_string(),
770+
create_test_monitor(
771+
"monitor",
772+
vec!["ethereum_mainnet"],
773+
false,
774+
vec!["test-trigger"],
775+
),
776+
);
777+
778+
// Create repository directly
779+
let repository = MonitorRepository::new_with_monitors(mocked_monitors);
780+
781+
// Test the trait implementation directly
782+
let result =
783+
<MonitorRepository<MockNetworkRepository, MockTriggerRepository> as MonitorRepositoryTrait<
784+
MockNetworkRepository,
785+
MockTriggerRepository,
786+
>>::load_from_path(
787+
&repository,
788+
None,
789+
Some(mock_network_service),
790+
Some(mock_trigger_service),
791+
);
792+
793+
assert!(result.is_err());
794+
}
795+
796+
#[test]
797+
fn test_load_from_path_trait_implementation_no_network_service() {
798+
// Setup temporary directory and files
799+
let temp_dir = TempDir::new().unwrap();
800+
let monitor_path = create_test_monitor_file(&temp_dir, "monitor");
801+
802+
let mut mocked_triggers = HashMap::new();
803+
mocked_triggers.insert("test-trigger".to_string(), create_test_trigger("test"));
804+
let mock_trigger_service = setup_trigger_service(mocked_triggers);
805+
806+
let mut mocked_monitors = HashMap::new();
807+
mocked_monitors.insert(
808+
"monitor".to_string(),
809+
create_test_monitor(
810+
"monitor",
811+
vec!["ethereum_mainnet"],
812+
false,
813+
vec!["test-trigger"],
814+
),
815+
);
816+
817+
// Create repository directly
818+
let repository = MonitorRepository::new_with_monitors(mocked_monitors);
819+
820+
// Test the trait implementation directly
821+
let result =
822+
<MonitorRepository<MockNetworkRepository, MockTriggerRepository> as MonitorRepositoryTrait<
823+
MockNetworkRepository,
824+
MockTriggerRepository,
825+
>>::load_from_path(
826+
&repository,
827+
Some(&monitor_path),
828+
None,
829+
Some(mock_trigger_service),
830+
);
831+
832+
assert!(result.is_ok());
833+
let monitor = result.unwrap();
834+
assert_eq!(monitor.name, "monitor");
835+
assert!(monitor.networks.contains(&"ethereum_mainnet".to_string()));
836+
assert!(monitor.triggers.contains(&"test-trigger".to_string()));
837+
}

0 commit comments

Comments
 (0)