foraneus 0.0.8 → 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9cc94a9dc63702c1d2b3c8cbfb61fb4df4c0184c
4
- data.tar.gz: a17c6451c968d63a195d242c95633aa9a10430d2
3
+ metadata.gz: 976c68b16acbcc76530fda47381d9ab002e2af0e
4
+ data.tar.gz: 3c76aa959fc3e5677a75479b11b153de3e6126a3
5
5
  SHA512:
6
- metadata.gz: 72d2b1d0693b01fe09d794b3cfc25f3316ff732e2df92fcfe5316645a5f6063c8c1e8fadae7b2827050297295d4c2c82415d16ce60c33b0a7fac56656ae179e8
7
- data.tar.gz: 707019d7e8a43204dea773430eada124306bda384fcff69664b393ac4db9372379cfa11fc1cc61874bcc4e0436c1321d2539d29ab445670a0a75b43c594c102b
6
+ metadata.gz: ef995adf323dd314630b41305a9ba4ca6744cad7fe8e0b8a1a02eb72dc491f0124c7f49ae9b94f301f6fb7afba8d5a130949a62dd370c8a19dd45678f0bde6f6
7
+ data.tar.gz: 035ad2c188843583faf6dd2313ba263e9c94493263037964f584419c6693b28d14c778dfa64bacd4388d2b369b1cd0d1261aefd1feebef1d08e1c056c56877ac
data/lib/foraneus.rb CHANGED
@@ -190,9 +190,13 @@ class Foraneus
190
190
 
191
191
  return unless converter
192
192
 
193
- if (v.nil? || v == '') && converter.opts[:required]
193
+ if v == '' && converter.opts.fetch(:blanks_as_nil, true)
194
+ v = nil
195
+ end
196
+
197
+ if v.nil? && converter.opts[:required]
194
198
  raise KeyError, "required parameter not found: #{field.inspect}"
195
- elsif v.nil? || v == ''
199
+ elsif v.nil?
196
200
  v = nil
197
201
  else
198
202
  v = converter.parse(v)
@@ -39,6 +39,18 @@ describe Foraneus do
39
39
 
40
40
  its([]) { should include('delay' => '5') }
41
41
  end
42
+
43
+ context 'when empty strings' do
44
+ let(:converter) { Foraneus::Converters::String.new }
45
+
46
+ subject(:form) { form_spec.parse(:delay => '') }
47
+
48
+ its(:delay) { should eq(nil) }
49
+
50
+ its(:data) { should include(:delay => nil) }
51
+
52
+ it { should be_valid }
53
+ end
42
54
  end
43
55
 
44
56
  context 'with non parseable data' do
@@ -89,6 +101,30 @@ describe Foraneus do
89
101
  it { should be_valid }
90
102
  end
91
103
 
104
+ context 'when a field is declared as allow blanks = true' do
105
+ let(:converter) { Foraneus::Converters::String.new(:blanks_as_nil => true) }
106
+
107
+ subject(:form) { form_spec.parse(:delay => '') }
108
+
109
+ its(:delay) { should be_nil }
110
+
111
+ its(:data) { should include(:delay => nil) }
112
+
113
+ its([:delay]) { should eq('') }
114
+
115
+ its([]) { should include(:delay => '') }
116
+ end
117
+
118
+ context 'when a field is declared as blanks_as_nil = false' do
119
+ let(:converter) { Foraneus::Converters::String.new(:blanks_as_nil => false) }
120
+
121
+ subject(:form) { form_spec.parse(:delay => '') }
122
+
123
+ its(:delay) { should eq('') }
124
+
125
+ its(:data) { should include(:delay => '') }
126
+ end
127
+
92
128
  shared_examples 'an absent parameters handler' do |missing_value|
93
129
  subject(:form) { form_spec.parse(:delay => missing_value) }
94
130
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: foraneus
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 0.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gianfranco Zas
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-01 00:00:00.000000000 Z
11
+ date: 2014-08-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec