@@ -322,6 +322,48 @@ async def test_register_monitors_from_path_internal(clear_database):
322322 assert {monitor .name for monitor in registered_monitors } == expected_monitors
323323
324324
325+ async def test_register_monitors_from_path_validation_error (caplog , monkeypatch , clear_database ):
326+ """'_register_monitors_from_path' should log the errors if a monitor was not loaded and not
327+ register the monitor"""
328+ async def register_monitor_error_mock (monitor_name , monitor_code , additional_files ):
329+ raise monitors_loader .MonitorValidationError (monitor_name = "monitor" , errors_found = [])
330+
331+ monkeypatch .setattr (monitors_loader , "register_monitor" , register_monitor_error_mock )
332+
333+ registered_monitors = await Monitor .get_all ()
334+
335+ assert len (registered_monitors ) == 0
336+
337+ await monitors_loader ._register_monitors_from_path ("tests/sample_monitors" )
338+
339+ registered_monitors = await Monitor .get_all ()
340+ assert len (registered_monitors ) == 0
341+
342+ assert_message_in_log (caplog , "Monitor 'monitor_1' not registered" )
343+ assert_message_in_log (caplog , "Monitor 'monitor_2' not registered" )
344+ assert_message_in_log (caplog , "Monitor 'monitor_3' not registered" )
345+
346+
347+ async def test_register_monitors_from_path_error (caplog , monkeypatch , clear_database ):
348+ """'_register_monitors_from_path' should log the errors if a monitor was not loaded and not
349+ register the monitor"""
350+ async def register_monitor_error_mock (monitor_name , monitor_code , additional_files ):
351+ raise ValueError ("Some error" )
352+
353+ monkeypatch .setattr (monitors_loader , "register_monitor" , register_monitor_error_mock )
354+
355+ registered_monitors = await Monitor .get_all ()
356+
357+ assert len (registered_monitors ) == 0
358+
359+ await monitors_loader ._register_monitors_from_path ("tests/sample_monitors" )
360+
361+ registered_monitors = await Monitor .get_all ()
362+ assert len (registered_monitors ) == 0
363+
364+ assert_message_in_log (caplog , "ValueError: Some error" , count = 3 )
365+
366+
325367async def test_register_monitors (monkeypatch , clear_database ):
326368 """'register_monitors' should register all the internal and sample monitors if enabled,
327369 including their additional files"""
0 commit comments