ransack 1.8.10 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +0 -1
  3. data/.travis.yml +12 -3
  4. data/CHANGELOG.md +29 -5
  5. data/Gemfile +1 -9
  6. data/README.md +16 -25
  7. data/Rakefile +1 -22
  8. data/lib/polyamorous.rb +5 -18
  9. data/lib/polyamorous/activerecord_5.1_ruby_2/join_dependency.rb +2 -2
  10. data/lib/polyamorous/activerecord_5.2.0_ruby_2/join_dependency.rb +2 -2
  11. data/lib/polyamorous/activerecord_5.2.1_ruby_2/join_association.rb +38 -0
  12. data/lib/polyamorous/activerecord_5.2.1_ruby_2/join_dependency.rb +75 -0
  13. data/lib/ransack/adapters/active_record.rb +0 -9
  14. data/lib/ransack/adapters/active_record/base.rb +8 -0
  15. data/lib/ransack/adapters/active_record/context.rb +118 -182
  16. data/lib/ransack/adapters/active_record/ransack/context.rb +1 -8
  17. data/lib/ransack/adapters/active_record/ransack/translate.rb +1 -5
  18. data/lib/ransack/constants.rb +1 -1
  19. data/lib/ransack/context.rb +4 -0
  20. data/lib/ransack/nodes/value.rb +1 -1
  21. data/lib/ransack/search.rb +1 -1
  22. data/lib/ransack/version.rb +1 -1
  23. data/ransack.gemspec +4 -3
  24. data/spec/helpers/polyamorous_helper.rb +7 -9
  25. data/spec/ransack/adapters/active_record/base_spec.rb +35 -0
  26. data/spec/ransack/adapters/active_record/context_spec.rb +3 -6
  27. data/spec/ransack/helpers/form_builder_spec.rb +3 -15
  28. data/spec/ransack/helpers/form_helper_spec.rb +11 -99
  29. data/spec/ransack/join_association_spec.rb +1 -6
  30. data/spec/ransack/join_dependency_spec.rb +1 -6
  31. data/spec/ransack/search_spec.rb +2 -2
  32. data/spec/support/schema.rb +3 -21
  33. metadata +10 -83
  34. data/lib/polyamorous/activerecord_3_and_4.0_ruby_1.9/join_association.rb +0 -76
  35. data/lib/polyamorous/activerecord_3_and_4.0_ruby_1.9/join_dependency.rb +0 -96
  36. data/lib/polyamorous/activerecord_4.1_ruby_1.9/join_association.rb +0 -2
  37. data/lib/polyamorous/activerecord_4.1_ruby_1.9/join_dependency.rb +0 -4
  38. data/lib/polyamorous/activerecord_4.1_ruby_2/join_association.rb +0 -2
  39. data/lib/polyamorous/activerecord_4.1_ruby_2/join_dependency.rb +0 -3
  40. data/lib/polyamorous/activerecord_4.1_ruby_2/make_polyamorous_inner_joins.rb +0 -14
  41. data/lib/polyamorous/activerecord_4.2_ruby_1.9/join_association.rb +0 -46
  42. data/lib/polyamorous/activerecord_4.2_ruby_1.9/join_dependency.rb +0 -87
  43. data/lib/polyamorous/activerecord_4.2_ruby_2/join_association.rb +0 -2
  44. data/lib/polyamorous/activerecord_4.2_ruby_2/join_dependency.rb +0 -24
  45. data/lib/ransack/adapters/active_record/3.0/compat.rb +0 -173
  46. data/lib/ransack/adapters/active_record/3.0/context.rb +0 -203
  47. data/lib/ransack/adapters/active_record/3.1/context.rb +0 -212
  48. data/lib/ransack/adapters/active_record/3.2/context.rb +0 -44
  49. data/lib/ransack/adapters/mongoid.rb +0 -15
  50. data/lib/ransack/adapters/mongoid/3.2/.gitkeep +0 -0
  51. data/lib/ransack/adapters/mongoid/attributes/attribute.rb +0 -37
  52. data/lib/ransack/adapters/mongoid/attributes/order_predications.rb +0 -17
  53. data/lib/ransack/adapters/mongoid/attributes/predications.rb +0 -141
  54. data/lib/ransack/adapters/mongoid/base.rb +0 -134
  55. data/lib/ransack/adapters/mongoid/context.rb +0 -212
  56. data/lib/ransack/adapters/mongoid/inquiry_hash.rb +0 -23
  57. data/lib/ransack/adapters/mongoid/ransack/constants.rb +0 -88
  58. data/lib/ransack/adapters/mongoid/ransack/context.rb +0 -59
  59. data/lib/ransack/adapters/mongoid/ransack/nodes/condition.rb +0 -22
  60. data/lib/ransack/adapters/mongoid/ransack/translate.rb +0 -13
  61. data/lib/ransack/adapters/mongoid/ransack/visitor.rb +0 -18
  62. data/lib/ransack/adapters/mongoid/table.rb +0 -35
  63. data/spec/mongoid/adapters/mongoid/base_spec.rb +0 -314
  64. data/spec/mongoid/adapters/mongoid/context_spec.rb +0 -56
  65. data/spec/mongoid/configuration_spec.rb +0 -162
  66. data/spec/mongoid/dependencies_spec.rb +0 -8
  67. data/spec/mongoid/helpers/ransack_helper.rb +0 -11
  68. data/spec/mongoid/nodes/condition_spec.rb +0 -49
  69. data/spec/mongoid/nodes/grouping_spec.rb +0 -13
  70. data/spec/mongoid/predicate_spec.rb +0 -155
  71. data/spec/mongoid/search_spec.rb +0 -445
  72. data/spec/mongoid/support/mongoid.yml +0 -11
  73. data/spec/mongoid/support/schema.rb +0 -135
  74. data/spec/mongoid/translate_spec.rb +0 -14
  75. data/spec/mongoid_spec_helper.rb +0 -63
  76. data/spec/ransack/dependencies_spec.rb +0 -12
@@ -1,445 +0,0 @@
1
- require 'mongoid_spec_helper'
2
-
3
- module Ransack
4
- describe Search do
5
- describe '#initialize' do
6
- it "removes empty conditions before building" do
7
- expect_any_instance_of(Search).to receive(:build).with({})
8
- Search.new(Person, :name_eq => '')
9
- end
10
-
11
- it "keeps conditions with a false value before building" do
12
- expect_any_instance_of(Search).to receive(:build).with({"name_eq" => false})
13
- Search.new(Person, :name_eq => false)
14
- end
15
-
16
- it "keeps conditions with a value before building" do
17
- expect_any_instance_of(Search).to receive(:build).with({"name_eq" => 'foobar'})
18
- Search.new(Person, :name_eq => 'foobar')
19
- end
20
-
21
- it "removes empty suffixed conditions before building" do
22
- expect_any_instance_of(Search).to receive(:build).with({})
23
- Search.new(Person, :name_eq_any => [''])
24
- end
25
-
26
- it "keeps suffixed conditions with a false value before building" do
27
- expect_any_instance_of(Search).to receive(:build).with({"name_eq_any" => [false]})
28
- Search.new(Person, :name_eq_any => [false])
29
- end
30
-
31
- it "keeps suffixed conditions with a value before building" do
32
- expect_any_instance_of(Search).to receive(:build).with({"name_eq_any" => ['foobar']})
33
- Search.new(Person, :name_eq_any => ['foobar'])
34
- end
35
-
36
- it 'does not raise exception for string :params argument' do
37
- expect { Search.new(Person, '') }.not_to raise_error
38
- end
39
- end
40
-
41
- describe '#build' do
42
- it 'creates conditions for top-level attributes' do
43
- search = Search.new(Person, :name_eq => 'Ernie')
44
- condition = search.base[:name_eq]
45
- expect(condition).to be_a Nodes::Condition
46
- expect(condition.predicate.name).to eq 'eq'
47
- expect(condition.attributes.first.name).to eq 'name'
48
- expect(condition.value).to eq 'Ernie'
49
- end
50
-
51
- context 'joins' do
52
- before { pending 'not implemented for mongoid' }
53
-
54
- it 'creates conditions for association attributes' do
55
- search = Search.new(Person, :children_name_eq => 'Ernie')
56
- condition = search.base[:children_name_eq]
57
- expect(condition).to be_a Nodes::Condition
58
- expect(condition.predicate.name).to eq 'eq'
59
- expect(condition.attributes.first.name).to eq 'children_name'
60
- expect(condition.value).to eq 'Ernie'
61
- end
62
-
63
- it 'creates conditions for polymorphic belongs_to association attributes' do
64
- search = Search.new(Note, :notable_of_Person_type_name_eq => 'Ernie')
65
- condition = search.base[:notable_of_Person_type_name_eq]
66
- expect(condition).to be_a Nodes::Condition
67
- expect(condition.predicate.name).to eq 'eq'
68
- expect(condition.attributes.first.name).to eq 'notable_of_Person_type_name'
69
- expect(condition.value).to eq 'Ernie'
70
- end
71
-
72
- it 'creates conditions for multiple polymorphic belongs_to association attributes' do
73
- search = Search.new(Note,
74
- :notable_of_Person_type_name_or_notable_of_Article_type_title_eq => 'Ernie')
75
- condition = search.
76
- base[:notable_of_Person_type_name_or_notable_of_Article_type_title_eq]
77
- expect(condition).to be_a Nodes::Condition
78
- expect(condition.predicate.name).to eq 'eq'
79
- expect(condition.attributes.first.name).to eq 'notable_of_Person_type_name'
80
- expect(condition.attributes.last.name).to eq 'notable_of_Article_type_title'
81
- expect(condition.value).to eq 'Ernie'
82
- end
83
- before { skip }
84
- it 'accepts arrays of groupings with joins' do
85
- search = Search.new(Person,
86
- g: [
87
- { :m => 'or', :name_eq => 'Ernie', :children_name_eq => 'Ernie' },
88
- { :m => 'or', :name_eq => 'Bert', :children_name_eq => 'Bert' },
89
- ]
90
- )
91
- ors = search.groupings
92
- expect(ors.size).to eq(2)
93
- or1, or2 = ors
94
- expect(or1).to be_a Nodes::Grouping
95
- expect(or1.combinator).to eq 'or'
96
- expect(or2).to be_a Nodes::Grouping
97
- expect(or2.combinator).to eq 'or'
98
- end
99
-
100
- it 'accepts "attributes" hashes for groupings' do
101
- search = Search.new(Person,
102
- g: {
103
- '0' => { m: 'or', name_eq: 'Ernie', children_name_eq: 'Ernie' },
104
- '1' => { m: 'or', name_eq: 'Bert', children_name_eq: 'Bert' },
105
- }
106
- )
107
- ors = search.groupings
108
- expect(ors.size).to eq(2)
109
- or1, or2 = ors
110
- expect(or1).to be_a Nodes::Grouping
111
- expect(or1.combinator).to eq 'or'
112
- expect(or2).to be_a Nodes::Grouping
113
- expect(or2.combinator).to eq 'or'
114
- end
115
-
116
- it 'accepts "attributes" hashes for conditions' do
117
- search = Search.new(Person,
118
- :c => {
119
- '0' => { :a => ['name'], :p => 'eq', :v => ['Ernie'] },
120
- '1' => { :a => ['children_name', 'parent_name'],
121
- :p => 'eq', :v => ['Ernie'], :m => 'or' }
122
- }
123
- )
124
- conditions = search.base.conditions
125
- expect(conditions.size).to eq(2)
126
- expect(conditions.map { |c| c.class })
127
- .to eq [Nodes::Condition, Nodes::Condition]
128
- end
129
-
130
- before { skip }
131
- it 'does not evaluate the query on #inspect' do
132
- search = Search.new(Person, :children_id_in => [1, 2, 3])
133
- expect(search.inspect).not_to match /ActiveRecord/
134
- end
135
- end
136
-
137
- it 'discards empty conditions' do
138
- search = Search.new(Person, :children_name_eq => '')
139
- condition = search.base[:children_name_eq]
140
- expect(condition).to be_nil
141
- end
142
-
143
- it 'accepts arrays of groupings' do
144
- search = Search.new(Person,
145
- g: [
146
- { :m => 'or', :name_eq => 'Ernie', :email_eq => 'ernie@example.org' },
147
- { :m => 'or', :name_eq => 'Bert', :email_eq => 'bert@example.org' },
148
- ]
149
- )
150
- ors = search.groupings
151
- expect(ors.size).to eq(2)
152
- or1, or2 = ors
153
- expect(or1).to be_a Nodes::Grouping
154
- expect(or1.combinator).to eq 'or'
155
- expect(or2).to be_a Nodes::Grouping
156
- expect(or2.combinator).to eq 'or'
157
- end
158
-
159
- it 'creates conditions for custom predicates that take arrays' do
160
- Ransack.configure do |config|
161
- config.add_predicate 'ary_pred', :wants_array => true
162
- end
163
-
164
- search = Search.new(Person, :name_ary_pred => ['Ernie', 'Bert'])
165
- condition = search.base[:name_ary_pred]
166
- expect(condition).to be_a Nodes::Condition
167
- expect(condition.predicate.name).to eq 'ary_pred'
168
- expect(condition.attributes.first.name).to eq 'name'
169
- expect(condition.value).to eq ['Ernie', 'Bert']
170
- end
171
-
172
- context 'with an invalid condition' do
173
- subject { Search.new(Person, :unknown_attr_eq => 'Ernie') }
174
-
175
- context "when ignore_unknown_conditions is false" do
176
- before do
177
- Ransack.configure { |c| c.ignore_unknown_conditions = false }
178
- end
179
-
180
- specify { expect { subject }.to raise_error ArgumentError }
181
- end
182
-
183
- context "when ignore_unknown_conditions is true" do
184
- before do
185
- Ransack.configure { |c| c.ignore_unknown_conditions = true }
186
- end
187
-
188
- specify { expect { subject }.not_to raise_error }
189
- end
190
- end
191
- end
192
-
193
- describe '#result' do
194
- let(:people_name_field) {
195
- "#{quote_table_name("people")}.#{quote_column_name("name")}"
196
- }
197
- # let(:children_people_name_field) {
198
- # "#{quote_table_name("children_people")}.#{quote_column_name("name")}"
199
- # }
200
-
201
- it 'evaluates arrays of groupings' do
202
- search = Search.new(Person,
203
- :g => [
204
- { :m => 'or', :name_eq => 'Ernie', :email_eq => 'ernie@example.org' },
205
- { :m => 'or', :name_eq => 'Bert', :email_eq => 'bert@example.org' }
206
- ]
207
- )
208
- expect(search.result).to be_an Mongoid::Criteria
209
- selector = search.result.selector
210
- expect(selector.keys).to eq ['$and']
211
- first, second = selector.values.first
212
- expect(first).to eq({ '$or' => [ { 'name' => 'Ernie' }, { 'email' => 'ernie@example.org' } ] })
213
- expect(second).to eq({ '$or' => [ { 'name' => 'Bert' }, { 'email' => 'bert@example.org' } ] })
214
- end
215
-
216
- context 'with joins' do
217
- before { pending 'not implemented for mongoid' }
218
-
219
- it 'evaluates conditions contextually' do
220
- search = Search.new(Person, :children_name_eq => 'Ernie')
221
- expect(search.result).to be_an ActiveRecord::Relation
222
- where = search.result.where_values.first
223
- expect(where.to_sql).to match /#{children_people_name_field} = 'Ernie'/
224
- end
225
-
226
- it 'evaluates compound conditions contextually' do
227
- search = Search.new(Person, :children_name_or_name_eq => 'Ernie')
228
- expect(search.result).to be_an ActiveRecord::Relation
229
- where = search.result.where_values.first
230
- expect(where.to_sql).to match /#{children_people_name_field
231
- } = 'Ernie' OR #{people_name_field} = 'Ernie'/
232
- end
233
-
234
- it 'evaluates polymorphic belongs_to association conditions contextually' do
235
- search = Search.new(Note, :notable_of_Person_type_name_eq => 'Ernie')
236
- expect(search.result).to be_an ActiveRecord::Relation
237
- where = search.result.where_values.first
238
- expect(where.to_sql).to match /#{people_name_field} = 'Ernie'/
239
- end
240
-
241
- it 'evaluates nested conditions' do
242
- search = Search.new(Person, :children_name_eq => 'Ernie',
243
- :g => [
244
- { :m => 'or',
245
- :name_eq => 'Ernie',
246
- :children_children_name_eq => 'Ernie'
247
- }
248
- ]
249
- )
250
- expect(search.result).to be_an ActiveRecord::Relation
251
- where = search.result.where_values.first
252
- expect(where.to_sql).to match /#{children_people_name_field} = 'Ernie'/
253
- expect(where.to_sql).to match /#{people_name_field} = 'Ernie'/
254
- expect(where.to_sql).to match /#{quote_table_name("children_people_2")
255
- }.#{quote_column_name("name")} = 'Ernie'/
256
- end
257
-
258
- it 'evaluates arrays of groupings' do
259
- search = Search.new(Person,
260
- :g => [
261
- { :m => 'or', :name_eq => 'Ernie', :children_name_eq => 'Ernie' },
262
- { :m => 'or', :name_eq => 'Bert', :children_name_eq => 'Bert' }
263
- ]
264
- )
265
- expect(search.result).to be_an ActiveRecord::Relation
266
- where = search.result.where_values.first
267
- sql = where.to_sql
268
- first, second = sql.split(/ AND /)
269
- expect(first).to match /#{people_name_field} = 'Ernie'/
270
- expect(first).to match /#{children_people_name_field} = 'Ernie'/
271
- expect(second).to match /#{people_name_field} = 'Bert'/
272
- expect(second).to match /#{children_people_name_field} = 'Bert'/
273
- end
274
-
275
- it 'returns distinct records when passed :distinct => true' do
276
- search = Search.new(
277
- Person, :g => [
278
- { :m => 'or',
279
- :comments_body_cont => 'e',
280
- :articles_comments_body_cont => 'e'
281
- }
282
- ]
283
- )
284
- if ActiveRecord::VERSION::MAJOR == 3
285
- all_or_load, uniq_or_distinct = :all, :uniq
286
- else
287
- all_or_load, uniq_or_distinct = :load, :distinct
288
- end
289
- expect(search.result.send(all_or_load).size).
290
- to eq(9000)
291
- expect(search.result(:distinct => true).size).
292
- to eq(10)
293
- expect(search.result.send(all_or_load).send(uniq_or_distinct)).
294
- to eq search.result(:distinct => true).send(all_or_load)
295
- end
296
- end
297
- end
298
-
299
- describe '#sorts=' do
300
- before do
301
- @s = Search.new(Person)
302
- end
303
-
304
- it 'creates sorts based on a single attribute/direction' do
305
- @s.sorts = 'id desc'
306
- expect(@s.sorts.size).to eq(1)
307
- sort = @s.sorts.first
308
- expect(sort).to be_a Nodes::Sort
309
- expect(sort.name).to eq 'id'
310
- expect(sort.dir).to eq 'desc'
311
- expect(@s.result.options).to eq({ :sort => { '_id' => -1 } })
312
- end
313
-
314
- it 'creates sorts based on a single attribute and uppercase direction' do
315
- @s.sorts = 'id DESC'
316
- expect(@s.sorts.size).to eq(1)
317
- sort = @s.sorts.first
318
- expect(sort).to be_a Nodes::Sort
319
- expect(sort.name).to eq 'id'
320
- expect(sort.dir).to eq 'desc'
321
- expect(@s.result.options).to eq({ :sort => { '_id' => -1 } })
322
- end
323
-
324
- it 'creates sorts based on a single attribute and without direction' do
325
- @s.sorts = 'id'
326
- expect(@s.sorts.size).to eq(1)
327
- sort = @s.sorts.first
328
- expect(sort).to be_a Nodes::Sort
329
- expect(sort.name).to eq 'id'
330
- expect(sort.dir).to eq 'asc'
331
- expect(@s.result.options).to eq({ :sort => { '_id' => 1 } })
332
- end
333
-
334
- it 'creates sorts based on multiple attributes/directions in array format' do
335
- @s.sorts = ['id desc', { :name => 'name', :dir => 'asc' }]
336
- expect(@s.sorts.size).to eq(2)
337
- sort1, sort2 = @s.sorts
338
- expect(sort1).to be_a Nodes::Sort
339
- expect(sort1.name).to eq 'id'
340
- expect(sort1.dir).to eq 'desc'
341
- expect(sort2).to be_a Nodes::Sort
342
- expect(sort2.name).to eq 'name'
343
- expect(sort2.dir).to eq 'asc'
344
- expect(@s.result.options).to eq({ :sort=>{"_id"=>-1, "name"=>1} })
345
- end
346
-
347
- it 'creates sorts based on multiple attributes and uppercase directions in array format' do
348
- @s.sorts = ['id DESC', { :name => 'name', :dir => 'ASC' }]
349
- expect(@s.sorts.size).to eq(2)
350
- sort1, sort2 = @s.sorts
351
- expect(sort1).to be_a Nodes::Sort
352
- expect(sort1.name).to eq 'id'
353
- expect(sort1.dir).to eq 'desc'
354
- expect(sort2).to be_a Nodes::Sort
355
- expect(sort2.name).to eq 'name'
356
- expect(sort2.dir).to eq 'asc'
357
- expect(@s.result.options).to eq({ :sort=>{"_id"=>-1, "name"=>1} })
358
- end
359
-
360
- it 'creates sorts based on multiple attributes and different directions in array format' do
361
- @s.sorts = ['id DESC', { name: 'name', dir: nil }]
362
- expect(@s.sorts.size).to eq(2)
363
- sort1, sort2 = @s.sorts
364
- expect(sort1).to be_a Nodes::Sort
365
- expect(sort1.name).to eq 'id'
366
- expect(sort1.dir).to eq 'desc'
367
- expect(sort2).to be_a Nodes::Sort
368
- expect(sort2.name).to eq 'name'
369
- expect(sort2.dir).to eq 'asc'
370
- expect(@s.result.options).to eq({ :sort=>{"_id"=>-1, "name"=>1} })
371
- end
372
-
373
- it 'creates sorts based on multiple attributes/directions in hash format' do
374
- @s.sorts = {
375
- '0' => { :name => 'id', :dir => 'desc' },
376
- '1' => { :name => 'name', :dir => 'asc' }
377
- }
378
- expect(@s.sorts.size).to eq(2)
379
- expect(@s.sorts).to be_all { |s| Nodes::Sort === s }
380
- id_sort = @s.sorts.detect { |s| s.name == 'id' }
381
- name_sort = @s.sorts.detect { |s| s.name == 'name' }
382
- expect(id_sort.dir).to eq 'desc'
383
- expect(name_sort.dir).to eq 'asc'
384
- expect(@s.result.options).to eq({ :sort=>{"_id"=>-1, "name"=>1} })
385
- end
386
-
387
- it 'creates sorts based on multiple attributes and uppercase directions in hash format' do
388
- @s.sorts = {
389
- '0' => { :name => 'id', :dir => 'DESC' },
390
- '1' => { :name => 'name', :dir => 'ASC' }
391
- }
392
- expect(@s.sorts.size).to eq(2)
393
- expect(@s.sorts).to be_all { |s| Nodes::Sort === s }
394
- id_sort = @s.sorts.detect { |s| s.name == 'id' }
395
- name_sort = @s.sorts.detect { |s| s.name == 'name' }
396
- expect(id_sort.dir).to eq 'desc'
397
- expect(name_sort.dir).to eq 'asc'
398
- expect(@s.result.options).to eq({ :sort=>{"_id"=>-1, "name"=>1} })
399
- end
400
-
401
- it 'creates sorts based on multiple attributes and different directions in hash format' do
402
- @s.sorts = {
403
- '0' => { :name => 'id', :dir => 'DESC' },
404
- '1' => { :name => 'name', :dir => nil }
405
- }
406
- expect(@s.sorts.size).to eq(2)
407
- expect(@s.sorts).to be_all { |s| Nodes::Sort === s }
408
- id_sort = @s.sorts.detect { |s| s.name == 'id' }
409
- name_sort = @s.sorts.detect { |s| s.name == 'name' }
410
- expect(id_sort.dir).to eq 'desc'
411
- expect(name_sort.dir).to eq 'asc'
412
- expect(@s.result.options).to eq({ :sort=>{"_id"=>-1, "name"=>1} })
413
- end
414
-
415
- it 'overrides existing sort' do
416
- @s.sorts = 'id asc'
417
- expect(@s.result.first.id.to_s).to eq Person.min(:id).to_s
418
- end
419
- end
420
-
421
- describe '#method_missing' do
422
- before do
423
- @s = Search.new(Person)
424
- end
425
-
426
- it 'raises NoMethodError when sent an invalid attribute' do
427
- expect { @s.blah }.to raise_error NoMethodError
428
- end
429
-
430
- it 'sets condition attributes when sent valid attributes' do
431
- @s.name_eq = 'Ernie'
432
- expect(@s.name_eq).to eq 'Ernie'
433
- end
434
-
435
- context 'with joins' do
436
- it 'allows chaining to access nested conditions' do
437
- @s.groupings = [
438
- { :m => 'or', :name_eq => 'Ernie', :children_name_eq => 'Ernie' }
439
- ]
440
- expect(@s.groupings.first.children_name_eq).to eq 'Ernie'
441
- end
442
- end
443
- end
444
- end
445
- end
@@ -1,11 +0,0 @@
1
- test:
2
- clients:
3
- default:
4
- database: ransack_mongoid_test
5
- hosts:
6
- - localhost:27017
7
- sessions:
8
- default:
9
- database: ransack_mongoid_test
10
- hosts:
11
- - localhost:27017