diff --git a/spec/grape/validations/types/primitive_coercer_spec.rb b/spec/grape/validations/types/primitive_coercer_spec.rb index 987ab11ec2..d215bf3325 100644 --- a/spec/grape/validations/types/primitive_coercer_spec.rb +++ b/spec/grape/validations/types/primitive_coercer_spec.rb @@ -11,8 +11,20 @@ context 'Boolean' do let(:type) { Grape::API::Boolean } - it 'coerces to Boolean' do - expect(subject.call(0)).to eq(false) + [true, 'true', 1].each do |val| + it "coerces '#{val}' to true" do + expect(subject.call(val)).to eq(true) + end + end + + [false, 'false', 0].each do |val| + it "coerces '#{val}' to false" do + expect(subject.call(val)).to eq(false) + end + end + + it 'returns an error when the given value cannot be coerced' do + expect(subject.call(123)).to be_instance_of(Grape::Validations::Types::InvalidValue) end end diff --git a/spec/grape/validations/validators/coerce_spec.rb b/spec/grape/validations/validators/coerce_spec.rb index d3c9ed7bf7..dbf57c9d57 100644 --- a/spec/grape/validations/validators/coerce_spec.rb +++ b/spec/grape/validations/validators/coerce_spec.rb @@ -294,66 +294,17 @@ def self.parsed?(value) end end - it 'Bool' do - subject.params do - requires :bool, coerce: Grape::API::Boolean - end - subject.get '/bool' do - params[:bool].class - end - - get '/bool', bool: 1 - expect(last_response.status).to eq(200) - expect(last_response.body).to eq('TrueClass') - - get '/bool', bool: 0 - expect(last_response.status).to eq(200) - expect(last_response.body).to eq('FalseClass') - - get '/bool', bool: 'false' - expect(last_response.status).to eq(200) - expect(last_response.body).to eq('FalseClass') - - get '/bool', bool: 'true' - expect(last_response.status).to eq(200) - expect(last_response.body).to eq('TrueClass') - end - it 'Boolean' do subject.params do - optional :boolean, type: Boolean, default: true + requires :boolean, type: Boolean end subject.get '/boolean' do params[:boolean].class end - get '/boolean' + get '/boolean', boolean: 1 expect(last_response.status).to eq(200) expect(last_response.body).to eq('TrueClass') - - get '/boolean', boolean: true - expect(last_response.status).to eq(200) - expect(last_response.body).to eq('TrueClass') - - get '/boolean', boolean: false - expect(last_response.status).to eq(200) - expect(last_response.body).to eq('FalseClass') - - get '/boolean', boolean: 'true' - expect(last_response.status).to eq(200) - expect(last_response.body).to eq('TrueClass') - - get '/boolean', boolean: 'false' - expect(last_response.status).to eq(200) - expect(last_response.body).to eq('FalseClass') - - get '/boolean', boolean: 123 - expect(last_response.status).to eq(400) - expect(last_response.body).to eq('boolean is invalid') - - get '/boolean', boolean: '123' - expect(last_response.status).to eq(400) - expect(last_response.body).to eq('boolean is invalid') end it 'Rack::Multipart::UploadedFile' do