@@ -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