sinatra-param 1.0.2 → 1.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/lib/sinatra/param.rb CHANGED
@@ -15,7 +15,8 @@ module Sinatra
15
15
  return unless params.member?(name) or present?(options[:default]) or options[:required]
16
16
 
17
17
  begin
18
- params[name] = coerce(params[name], type, options) || options[:default]
18
+ params[name] = coerce(params[name], type, options)
19
+ params[name] = options[:default] if params[name].nil? and options[:default]
19
20
  params[name] = options[:transform].to_proc.call(params[name]) if options[:transform]
20
21
  validate!(params[name], options)
21
22
  rescue
@@ -1,5 +1,5 @@
1
1
  module Sinatra
2
2
  module Param
3
- VERSION = '1.0.2'
3
+ VERSION = '1.0.3'
4
4
  end
5
5
  end
data/spec/dummy/app.rb CHANGED
@@ -71,18 +71,26 @@ class App < Sinatra::Base
71
71
  params.to_json
72
72
  end
73
73
 
74
- # transformations
75
74
  get '/default' do
76
75
  param :sort, String, default: "title"
77
76
  params.to_json
78
77
  end
79
78
 
79
+ get '/default/boolean/true' do
80
+ param :arg, Boolean, default: true
81
+ params.to_json
82
+ end
83
+
84
+ get '/default/boolean/false' do
85
+ param :arg, Boolean, default: false
86
+ params.to_json
87
+ end
88
+
80
89
  get '/transform' do
81
90
  param :order, String, transform: :upcase
82
91
  params.to_json
83
92
  end
84
93
 
85
- # validations
86
94
  get '/validation/required' do
87
95
  param :arg, String, required: true
88
96
  params.to_json
@@ -86,5 +86,34 @@ describe 'Parameter Types' do
86
86
  end
87
87
  end
88
88
  end
89
+
90
+ it 'coerces falsey booleans to false' do
91
+ %w(0 false f no n).each do |bool|
92
+ get('/coerce/boolean', arg: bool) do |response|
93
+ response.status.should == 200
94
+ JSON.parse(response.body)['arg'].should be_false
95
+ JSON.parse(response.body)['arg'].should_not be_nil
96
+ end
97
+ end
98
+ end
99
+
100
+ it 'coerces truthy booleans to true when default is false' do
101
+ %w(1 true t yes y).each do |bool|
102
+ get('/default/boolean/false', arg: bool) do |response|
103
+ response.status.should == 200
104
+ JSON.parse(response.body)['arg'].should be_true
105
+ end
106
+ end
107
+ end
108
+
109
+ it 'coerces falsey booleans to false when default is true' do
110
+ %w(0 false f no n).each do |bool|
111
+ get('/default/boolean/true', arg: bool) do |response|
112
+ response.status.should == 200
113
+ JSON.parse(response.body)['arg'].should be_false
114
+ JSON.parse(response.body)['arg'].should_not be_nil
115
+ end
116
+ end
117
+ end
89
118
  end
90
119
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sinatra-param
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mattt Thompson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-11-21 00:00:00.000000000 Z
11
+ date: 2013-12-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sinatra
@@ -140,8 +140,6 @@ files:
140
140
  - ./LICENSE
141
141
  - ./Rakefile
142
142
  - ./README.md
143
- - ./sinatra-param-1.0.0.gem
144
- - ./sinatra-param-1.0.1.gem
145
143
  - ./sinatra-param.gemspec
146
144
  - spec/dummy/app.rb
147
145
  - spec/parameter_sets_spec.rb
Binary file
Binary file