@@ -380,4 +380,64 @@ def mock_collection(method, os_name = nil, error = nil)
380380 end
381381 end
382382 end
383+
384+ describe '#debugonce' do
385+ context 'when debugging is active' do
386+ before do
387+ allow ( logger ) . to receive ( :debug )
388+ Facter . debugging ( true )
389+ end
390+
391+ after do
392+ Facter . debugging ( false )
393+ end
394+
395+ it 'calls logger with the debug message' do
396+ message = 'Some error message'
397+
398+ Facter . debugonce ( message )
399+
400+ expect ( logger ) . to have_received ( :debug ) . with ( message )
401+ end
402+
403+ it 'writes the same debug message only once' do
404+ message = 'Some error message'
405+
406+ Facter . debugonce ( message )
407+ Facter . debugonce ( message )
408+
409+ expect ( logger ) . to have_received ( :debug ) . once . with ( message )
410+ end
411+
412+ it 'writes empty message when message is nil' do
413+ Facter . debugonce ( nil )
414+
415+ expect ( logger ) . to have_received ( :debug ) . with ( '' )
416+ end
417+
418+ it 'when message is a hash' do
419+ Facter . debugonce ( { warn : 'message' } )
420+
421+ expect ( logger ) . to have_received ( :debug ) . with ( '{:warn=>"message"}' )
422+ end
423+
424+ it 'returns nil' do
425+ result = Facter . debugonce ( { warn : 'message' } )
426+
427+ expect ( result ) . to be_nil
428+ end
429+ end
430+ end
431+
432+ context 'when debugging is inactive' do
433+ before do
434+ allow ( logger ) . to receive ( :debug )
435+ end
436+
437+ it 'does not call the logger' do
438+ Facter . debugonce ( 'message' )
439+
440+ expect ( logger ) . not_to have_received ( :debug )
441+ end
442+ end
383443end
0 commit comments