itrigga-param_fu 0.4.0 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.4.0
1
+ 0.4.1
@@ -106,9 +106,11 @@ module Trigga
106
106
 
107
107
  def parse_field_definition( opts, model_class, param_name, definition )
108
108
  c = {:where=>[], :values=>[]}
109
- if opts[param_name]
110
- c[:where] << "( #{model_class.table_name}.#{definition[:field_name] || param_name.to_s} #{definition[:operator] || '='} (?) )"
111
- c[:values] << ( definition[:operator] =~ /\blike\b/i ? opts[param_name].to_active_record_condition : opts[param_name] )
109
+ if opts[param_name]
110
+ unless opts[param_name].to_s.empty?
111
+ c[:where] << "( #{model_class.table_name}.#{definition[:field_name] || param_name.to_s} #{definition[:operator] || '='} (?) )"
112
+ c[:values] << ( definition[:operator] =~ /\blike\b/i ? opts[param_name].to_active_record_condition : opts[param_name] )
113
+ end
112
114
  end
113
115
  c
114
116
  end
@@ -172,86 +172,104 @@ describe ::Trigga::ParamFu do
172
172
  @param_name = :param_1
173
173
  end
174
174
 
175
- it "should add an element to the :where key" do
176
- Tester.parse_field_definition( @params, @model_class, @param_name, @definition )[:where].size.should == 1
177
- end
175
+ context "and the param value is not empty" do
178
176
 
179
- describe "where clause" do
180
- it "should be wrapped in brackets" do
181
- Tester.parse_field_definition( @params, @model_class, @param_name, @definition )[:where][0].should =~ /^\s*\(.*\)\s*$/
177
+ it "should add an element to the :where key" do
178
+ Tester.parse_field_definition( @params, @model_class, @param_name, @definition )[:where].size.should == 1
182
179
  end
183
-
184
- describe "inside the brackets" do
185
- before(:each) do
186
- @inside_the_brackets = Tester.parse_field_definition( @params, @model_class, @param_name, @definition )[:where][0].gsub(/^\s*\((.*)\)\s*$/, '\1')
187
- end
188
-
189
- it "should start with the model_class's table name as a scope" do
190
- @inside_the_brackets.should =~ /\s*model_class_table_name\..*/
180
+
181
+ describe "where clause" do
182
+ it "should be wrapped in brackets" do
183
+ Tester.parse_field_definition( @params, @model_class, @param_name, @definition )[:where][0].should =~ /^\s*\(.*\)\s*$/
191
184
  end
192
-
193
- context "When the definition has a :fieldname" do
185
+
186
+ describe "inside the brackets" do
194
187
  before(:each) do
195
- @definition[:field_name] = 'field_name'
196
188
  @inside_the_brackets = Tester.parse_field_definition( @params, @model_class, @param_name, @definition )[:where][0].gsub(/^\s*\((.*)\)\s*$/, '\1')
197
189
  end
198
-
199
- it "should use the :fieldname" do
200
- @inside_the_brackets.should =~ /\s*[^\.]+\.field_name.*/
201
- end
202
- end
203
190
 
204
- context "When the definition has no :fieldname" do
205
- before(:each) do
206
- @definition[:field_name] = nil
207
- @inside_the_brackets = Tester.parse_field_definition( @params, @model_class, @param_name, @definition )[:where][0].gsub(/^\s*\((.*)\)\s*$/, '\1')
191
+ it "should start with the model_class's table name as a scope" do
192
+ @inside_the_brackets.should =~ /\s*model_class_table_name\..*/
208
193
  end
194
+
195
+ context "When the definition has a :fieldname" do
196
+ before(:each) do
197
+ @definition[:field_name] = 'field_name'
198
+ @inside_the_brackets = Tester.parse_field_definition( @params, @model_class, @param_name, @definition )[:where][0].gsub(/^\s*\((.*)\)\s*$/, '\1')
199
+ end
209
200
 
210
- it "should use the given param_name converted to a string as the field name" do
211
- @inside_the_brackets.should =~ /\s*[^\.]+\.param_1.*/
201
+ it "should use the :fieldname" do
202
+ @inside_the_brackets.should =~ /\s*[^\.]+\.field_name.*/
203
+ end
212
204
  end
213
- end
214
205
 
215
- context "When the definition has a :operator" do
216
- before(:each) do
217
- @definition[:operator] = 'my_operator'
218
- @inside_the_brackets = Tester.parse_field_definition( @params, @model_class, @param_name, @definition )[:where][0].gsub(/^\s*\((.*)\)\s*$/, '\1')
219
- end
206
+ context "When the definition has no :fieldname" do
207
+ before(:each) do
208
+ @definition[:field_name] = nil
209
+ @inside_the_brackets = Tester.parse_field_definition( @params, @model_class, @param_name, @definition )[:where][0].gsub(/^\s*\((.*)\)\s*$/, '\1')
210
+ end
220
211
 
221
- it "should use the :operator" do
222
- @inside_the_brackets.should =~ /.*\bmy_operator\b.*/
212
+ it "should use the given param_name converted to a string as the field name" do
213
+ @inside_the_brackets.should =~ /\s*[^\.]+\.param_1.*/
214
+ end
223
215
  end
224
- end
225
216
 
226
- context "When the definition has no :operator" do
227
- before(:each) do
228
- @definition[:operator] = nil
229
- @inside_the_brackets = Tester.parse_field_definition( @params, @model_class, @param_name, @definition )[:where][0].gsub(/^\s*\((.*)\)\s*$/, '\1')
217
+ context "When the definition has a :operator" do
218
+ before(:each) do
219
+ @definition[:operator] = 'my_operator'
220
+ @inside_the_brackets = Tester.parse_field_definition( @params, @model_class, @param_name, @definition )[:where][0].gsub(/^\s*\((.*)\)\s*$/, '\1')
221
+ end
222
+
223
+ it "should use the :operator" do
224
+ @inside_the_brackets.should =~ /.*\bmy_operator\b.*/
225
+ end
230
226
  end
227
+
228
+ context "When the definition has no :operator" do
229
+ before(:each) do
230
+ @definition[:operator] = nil
231
+ @inside_the_brackets = Tester.parse_field_definition( @params, @model_class, @param_name, @definition )[:where][0].gsub(/^\s*\((.*)\)\s*$/, '\1')
232
+ end
231
233
 
232
- it "should use = as the :operator" do
233
- @inside_the_brackets.should =~ /[^=]+\s*=\s*[^=]+/
234
+ it "should use = as the :operator" do
235
+ @inside_the_brackets.should =~ /[^=]+\s*=\s*[^=]+/
236
+ end
234
237
  end
235
- end
236
238
 
237
- it "should end with (?)" do
238
- @inside_the_brackets.should =~ /\(\?\)\s*$/
239
+ it "should end with (?)" do
240
+ @inside_the_brackets.should =~ /\(\?\)\s*$/
241
+ end
239
242
  end
240
243
  end
241
- end
242
244
 
243
- context "when the given :operator matches 'like'" do
244
- before(:each) do
245
- @definition[:operator] = " LIKE "
246
- end
245
+ context "when the given :operator matches 'like'" do
246
+ before(:each) do
247
+ @definition[:operator] = " LIKE "
248
+ end
247
249
 
248
- it "should add the corresponding value, converted to a like condition, to the :values key" do
249
- Tester.parse_field_definition( @params, @model_class, @param_name, @definition )[:values].should == ['%param_1%value%']
250
+ it "should add the corresponding value, converted to a like condition, to the :values key" do
251
+ Tester.parse_field_definition( @params, @model_class, @param_name, @definition )[:values].should == ['%param_1%value%']
252
+ end
253
+ end
254
+
255
+ it "should add the corresponding value to the :values key" do
256
+ Tester.parse_field_definition( @params, @model_class, @param_name, @definition )[:values].should == ['param_1 value']
250
257
  end
251
258
  end
252
259
 
253
- it "should add the corresponding value to the :values key" do
254
- Tester.parse_field_definition( @params, @model_class, @param_name, @definition )[:values].should == ['param_1 value']
260
+ context "when the given value is empty" do
261
+ before(:each) do
262
+ @params = {:param_1=>'', :param_2=>'dave'}
263
+ @param_name = :param_1
264
+ end
265
+
266
+ it "should not add the key to the where clause" do
267
+ Tester.parse_field_definition( @params, @model_class, @param_name, @definition )[:where].should be_empty
268
+ end
269
+
270
+ it "should not add the value to the :values key" do
271
+ Tester.parse_field_definition( @params, @model_class, @param_name, @definition )[:values].should_not include('')
272
+ end
255
273
  end
256
274
  end
257
275
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: itrigga-param_fu
3
3
  version: !ruby/object:Gem::Version
4
- hash: 15
4
+ hash: 13
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 4
9
- - 0
10
- version: 0.4.0
9
+ - 1
10
+ version: 0.4.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - Al Davidson
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2011-11-10 00:00:00 +00:00
19
+ date: 2011-11-18 00:00:00 +00:00
20
20
  default_executable:
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency