require 'spec_helper' describe Grape::Validations::DefaultValidator do module ValidationsSpec module DefaultValidatorSpec class API < Grape::API default_format :json params do optional :id optional :type, default: 'default-type' end get '/' do { id: params[:id], type: params[:type] } end params do optional :type1, default: 'default-type1' optional :type2, default: 'default-type2' end get '/user' do { type1: params[:type1], type2: params[:type2] } end params do requires :id optional :type1, default: 'default-type1' optional :type2, default: 'default-type2' end get '/message' do { id: params[:id], type1: params[:type1], type2: params[:type2] } end end end end def app ValidationsSpec::DefaultValidatorSpec::API end it 'set default value for optional param' do get("/") last_response.status.should == 200 last_response.body.should == { id: nil, type: 'default-type' }.to_json end it 'set default values for optional params' do get("/user") last_response.status.should == 200 last_response.body.should == { type1: 'default-type1', type2: 'default-type2' }.to_json end it 'set default values for missing params in the request' do get("/user?type2=value2") last_response.status.should == 200 last_response.body.should == { type1: 'default-type1', type2: 'value2' }.to_json end it 'set default values for optional params and allow to use required fields in the same time' do get("/message?id=1") last_response.status.should == 200 last_response.body.should == { id: '1', type1: 'default-type1', type2: 'default-type2' }.to_json end end