spec/argument_validator_spec.rb in flapjack-diner-1.4.0 vs spec/argument_validator_spec.rb in flapjack-diner-2.0.0.a4

- old
+ new

@@ -4,108 +4,167 @@ describe Flapjack::ArgumentValidator do context 'required' do let(:query) do - {:entity => 'myservice', :check => 'HOST'} + {:name => 'HOST', :enabled => false} end subject { Flapjack::ArgumentValidator.new(query) } - it 'does not raise an exception when query entity is valid' do - expect { subject.validate(:query => :entity, :as => :required) }.not_to raise_exception + it 'does not raise an error when query entity is valid' do + expect { + subject.validate(:query => :name, :as => :required) + }.not_to raise_error end it 'raises ArgumentError when query entity is invalid' do - query[:entity] = nil - expect { subject.validate(:query => :entity, :as => :required) }.to raise_exception + query[:name] = nil + expect { + subject.validate(:query => :name, :as => :required) + }.to raise_error(ArgumentError) end it 'handles arrays as query values valid' do - expect { subject.validate(:query => [:entity, :check], :as => :required) }.not_to raise_exception + expect { + subject.validate(:query => [:name, :enabled], :as => :required) + }.not_to raise_error end it 'handles arrays as query values invalid' do - query[:check] = nil - expect { subject.validate(:query => [:entity, :check], :as => :required) }.to raise_exception + query[:name] = nil + expect { + subject.validate(:query => [:name, :enabled], :as => :required) + }.to raise_error(ArgumentError) end end context 'time' do let(:query) do - {:start_time => Time.now, :duration => 10} + {:start_time => Time.now} end subject { Flapjack::ArgumentValidator.new(query) } - it 'does not raise an exception when query start_time is valid' do - expect { subject.validate(:query => :start_time, :as => :time) }.not_to raise_exception + it 'does not raise an error when query start_time is valid' do + expect { + subject.validate(:query => :start_time, :as => :time) + }.not_to raise_error end - it 'raises an exception when query start_time is invalid' do + it 'raises an error when query start_time is invalid' do query[:start_time] = 1234 - expect { subject.validate(:query => :start_time, :as => :time) }.to raise_exception + expect { + subject.validate(:query => :start_time, :as => :time) + }.to raise_error(ArgumentError) end it 'handles arrays as query values valid' do query[:end_time] = Time.now - expect { subject.validate(:query => [:start_time, :end_time], :as => :time) }.not_to raise_exception + expect { + subject.validate(:query => [:start_time, :end_time], :as => :time) + }.not_to raise_error end it 'handles arrays as query values invalid' do query[:end_time] = 3904 - expect { subject.validate(:query => [:start_time, :end_time], :as => :time) }.to raise_exception + expect { + subject.validate(:query => [:start_time, :end_time], :as => :time) + }.to raise_error(ArgumentError) end it 'handles dates as query values' do query[:end_time] = Date.today - expect { subject.validate(:query => :end_time, :as => :time) }.not_to raise_exception + expect { + subject.validate(:query => :end_time, :as => :time) + }.not_to raise_error end it 'handles ISO 8601 strings as query values' do query[:end_time] = Time.now.iso8601 - expect { subject.validate(:query => :end_time, :as => :time) }.not_to raise_exception + expect { + subject.validate(:query => :end_time, :as => :time) + }.not_to raise_error end - it 'raises an exception when invalid time strings are provided' do + it 'raises an error when invalid time strings are provided' do query[:end_time] = '2011-08-01T00:00' - expect { subject.validate(:query => :end_time, :as => :time) }.to raise_exception + expect { + subject.validate(:query => :end_time, :as => :time) + }.to raise_error(ArgumentError) end end context 'integer via method missing' do let(:query) do - {:start_time => Time.now, :duration => 10} + {:duration => 10} end subject { Flapjack::ArgumentValidator.new(query) } - it 'does not raise an exception when query duration is valid' do - expect { subject.validate(:query => :duration, :as => :integer) }.not_to raise_exception + it 'does not raise an error when query duration is valid' do + expect { + subject.validate(:query => :duration, :as => :integer) + }.not_to raise_error end - it 'raises an exception when query duration is invalid' do + it 'raises an error when query duration is invalid' do query[:duration] = '23' - expect { subject.validate(:query => :duration, :as => :integer) }.to raise_exception + expect { + subject.validate(:query => :duration, :as => :integer) + }.to raise_error(ArgumentError) end end + context 'string via method missing' do + + let(:query) do + {:name => 'Herbert'} + end + + subject { Flapjack::ArgumentValidator.new(query) } + + it 'does not raise an error when query name is valid' do + expect { + subject.validate(:query => :name, :as => :non_empty_string) + }.not_to raise_error + end + + it 'raises an error when query name is empty' do + query[:name] = '' + expect { + subject.validate(:query => :name, :as => :non_empty_string) + }.to raise_error(ArgumentError) + end + + it 'raises an error when query name is invalid' do + query[:name] = 23 + expect { + subject.validate(:query => :name, :as => :non_empty_string) + }.to raise_error(ArgumentError) + end + end + context 'multiple validations' do let(:query) do {:start_time => Time.now, :duration => 10} end subject { Flapjack::ArgumentValidator.new(query) } - it 'does not raise an exception when query start_time is valid' do - expect { subject.validate(:query => :start_time, :as => [:time, :required]) }.not_to raise_exception + it 'does not raise an error when query start_time is valid' do + expect { + subject.validate(:query => :start_time, :as => [:time, :required]) + }.not_to raise_error end - it 'raises an exception when query start_time is invalid' do + it 'raises an error when query start_time is invalid' do query[:start_time] = nil - expect { subject.validate(:query => :start_time, :as => [:time, :required]) }.to raise_exception + expect { + subject.validate(:query => :start_time, :as => [:time, :required]) + }.to raise_error(ArgumentError) end end end