diff --git a/lib/rackstash.rb b/lib/rackstash.rb index 60dae1e..6001537 100644 --- a/lib/rackstash.rb +++ b/lib/rackstash.rb @@ -75,6 +75,7 @@ module Rackstash def self.severity_label(severity) if severity.is_a?(Integer) + return SEVERITY_LABELS.last if severity < 0 SEVERITY_LABELS[severity] || SEVERITY_LABELS.last else severity = SEVERITY_NAMES.fetch(severity.to_s.downcase, UNKNOWN) diff --git a/spec/rackstash_spec.rb b/spec/rackstash_spec.rb index 7da0266..3a716a6 100644 --- a/spec/rackstash_spec.rb +++ b/spec/rackstash_spec.rb @@ -57,4 +57,30 @@ describe Rackstash do expect(Rackstash::UNDEFINED).not_to eql true expect(Rackstash::UNDEFINED).not_to eql 42 end + + describe '.severity_label' do + it 'returns the label for an integer severity' do + expect(described_class.severity_label(0)).to eql 'DEBUG' + expect(described_class.severity_label(4)).to eql 'FATAL' + expect(described_class.severity_label(5)).to eql 'ANY' + end + + it 'returns ANY for out-of-range severities' do + expect(described_class.severity_label(-3)).to eql 'ANY' + expect(described_class.severity_label(42)).to eql 'ANY' + end + + it 'returns the label for a named severity' do + expect(described_class.severity_label('DeBuG')).to eql 'DEBUG' + expect(described_class.severity_label('warn')).to eql 'WARN' + expect(described_class.severity_label(:error)).to eql 'ERROR' + expect(described_class.severity_label('UnknoWn')).to eql 'ANY' + end + + it 'returns ANY for unknown severity names' do + expect(described_class.severity_label('foo')).to eql 'ANY' + expect(described_class.severity_label(:test)).to eql 'ANY' + expect(described_class.severity_label(nil)).to eql 'ANY' + end + end end