From 7173124bc9755bb9eca57c80d804bb259aa8fd65 Mon Sep 17 00:00:00 2001 From: Ashutosh Agrawal Date: Wed, 29 Jul 2015 16:05:11 +0530 Subject: [PATCH] fixing the default false not working because .present? --- lib/rails_param/param.rb | 4 ++-- spec/rails_param/param_spec.rb | 8 ++++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/lib/rails_param/param.rb b/lib/rails_param/param.rb index 866db43..9adc2f8 100644 --- a/lib/rails_param/param.rb +++ b/lib/rails_param/param.rb @@ -15,11 +15,11 @@ class MockController def param!(name, type, options = {}, &block) name = name.to_s unless name.is_a? Integer # keep index for validating elements - return unless params.member?(name) || options[:default].present? || options[:required] + return unless params.member?(name) || !options[:default].nil? || options[:required] begin params[name] = coerce(params[name], type, options) - params[name] = (options[:default].call if options[:default].respond_to?(:call)) || options[:default] if params[name].nil? and options[:default] + params[name] = (options[:default].call if options[:default].respond_to?(:call)) || options[:default] if params[name].nil? and !options[:default].nil? params[name] = options[:transform].to_proc.call(params[name]) if params[name] and options[:transform] validate!(params[name], name, options) diff --git a/spec/rails_param/param_spec.rb b/spec/rails_param/param_spec.rb index 678dca0..73634b3 100644 --- a/spec/rails_param/param_spec.rb +++ b/spec/rails_param/param_spec.rb @@ -43,6 +43,14 @@ def params; end end + context "with a false value" do + it "defaults to the value" do + allow(controller).to receive(:params).and_return({}) + controller.param! :word, :boolean, default: false + expect(controller.params["word"]).to eql(false) + end + end + context "with a block" do it "defaults to the block value" do allow(controller).to receive(:params).and_return({})