ransack_query 0.3.0 → 0.4.0

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: 29866fedcac520d326da58852285d277c3c8a5cf
4
- data.tar.gz: 4316ef41d3eb2d83f10b5dd6641dae14faaa1718
3
+ metadata.gz: 553fe942438f924f048fcd4c1fa83366ac4fdb90
4
+ data.tar.gz: 42fecaf7185e415d54973863339ea75ab00f774f
5
5
  SHA512:
6
- metadata.gz: 4783eb8b35d2c9e286526346da0e0e75f8bec468681fe678919ea13e193ed7098eb5af264c4b8282bd51e5c64dda4ec470dbe41938d3b53f3ccbdeb57885e1f3
7
- data.tar.gz: 2026a2f35455d90bc04654fe30f46ae042360510b779531c1c9570d44fb17638693b5f9360c3f8d8d5c50ddf85a540e88b9a23984dfc754dc1b2e7c7a623f967
6
+ metadata.gz: c9106e9af0080f40e4101f716181568f90a05361612a0d73125dfdfab69d192153a8fb36e2954c0e96ae0b97d666316687e89ee56b9a65ab292eb74cbb4e306e
7
+ data.tar.gz: 411acd4b6f5f3e10c9b0d2661ba2ce70fa3250e366445de7a4016851e8ecb8719d5c3ea7c3aa1d10a57a140e33bcd92269f07a010e0ea9c829f3cff19607cc6a
data/CHANGELOG.md ADDED
@@ -0,0 +1,13 @@
1
+ # Change Log
2
+ All notable changes to this project will be documented in this file.
3
+
4
+ ## 0.4.0 - 2014-09-01
5
+ ### Added
6
+ - None
7
+
8
+ ### Changed
9
+ - Changed Condition model to RansackCondition.
10
+ Changed Grouping model to RansackGrouping.
11
+
12
+ ### Removed
13
+ - None
data/README.md CHANGED
@@ -1,3 +1,5 @@
1
+ [![Code Climate](https://codeclimate.com/github/frank-west-iii/ransack_query.png)](https://codeclimate.com/github/frank-west-iii/ransack_query)
2
+
1
3
  # RansackQuery
2
4
 
3
5
  This gem provides a semantic way of building advanced ransack queries outside of using the form.
@@ -42,7 +44,7 @@ and with arrays
42
44
  end
43
45
  and with blocks
44
46
 
45
- RansackQuery.build(prefix: 'q') do |grouping|
47
+ RansackQuery.build do |grouping|
46
48
  grouping.add_condition do |condition|
47
49
  condition.attribute = 'first_name'
48
50
  condition.value = 'Bob'
@@ -1,4 +1,4 @@
1
- class Condition
1
+ class RansackCondition
2
2
  attr_accessor :id, :predicate, :attribute, :value
3
3
 
4
4
  def initialize(attributes={})
@@ -19,6 +19,10 @@ class Condition
19
19
  }
20
20
  end
21
21
 
22
+ def to_condition
23
+ self
24
+ end
25
+
22
26
  private
23
27
  def build_ransack_array(array, hash_key)
24
28
  counter = -1
@@ -32,4 +36,4 @@ class Condition
32
36
  end
33
37
  end
34
38
 
35
- end
39
+ end
@@ -1,4 +1,4 @@
1
- class Grouping
1
+ class RansackGrouping
2
2
  attr_accessor :id, :combinator
3
3
  attr_reader :conditions, :groupings
4
4
 
@@ -12,31 +12,31 @@ class Grouping
12
12
 
13
13
  def add_condition(condition=nil)
14
14
  if block_given?
15
- condition = Condition.new do |new_condition|
15
+ condition = RansackCondition.new do |new_condition|
16
16
  yield new_condition
17
17
  end
18
18
  end
19
- conditions << condition
19
+ conditions << condition.to_condition
20
20
  self
21
21
  end
22
22
 
23
23
  def add_grouping(grouping=nil)
24
24
  if block_given?
25
- grouping = Grouping.new do |new_grouping|
25
+ grouping = RansackGrouping.new do |new_grouping|
26
26
  yield new_grouping
27
27
  end
28
28
  end
29
- groupings << grouping
29
+ groupings << grouping.to_grouping
30
30
  self
31
31
  end
32
32
 
33
33
  def add_conditions(conditions)
34
- @conditions += conditions
34
+ Array(conditions).each {|c| add_condition(c) }
35
35
  self
36
36
  end
37
37
 
38
38
  def add_groupings(groupings)
39
- @groupings += groupings
39
+ Array(groupings).each {|g| add_grouping(g) }
40
40
  self
41
41
  end
42
42
 
@@ -51,6 +51,10 @@ class Grouping
51
51
  ransack_hash
52
52
  end
53
53
 
54
+ def to_grouping
55
+ self
56
+ end
57
+
54
58
  private
55
59
 
56
60
  def ransackify_conditions(ransack_hash)
@@ -1,3 +1,3 @@
1
1
  module RansackQuery
2
- VERSION = '0.3.0'
2
+ VERSION = '0.4.0'
3
3
  end
data/lib/ransack_query.rb CHANGED
@@ -1,13 +1,13 @@
1
1
  require 'ransack_query/version'
2
- require 'grouping'
3
- require 'condition'
2
+ require 'ransack_grouping'
3
+ require 'ransack_condition'
4
4
  require 'json'
5
5
  require 'securerandom'
6
6
 
7
7
  module RansackQuery
8
8
 
9
9
  def self.build(options = {})
10
- grouping = Grouping.new do |new_grouping|
10
+ grouping = RansackGrouping.new do |new_grouping|
11
11
  yield new_grouping
12
12
  end
13
13
  ransack_hash = {'g' => grouping.ransackify}
@@ -20,18 +20,4 @@ module RansackQuery
20
20
  SecureRandom.hex
21
21
  end
22
22
 
23
- def self.sample
24
- build do |grouping|
25
- grouping.combinator = :or
26
- grouping.add_grouping do |new_grouping|
27
- new_grouping.add_condition(Condition.new(attribute: 'document_number', value: '111'))
28
- new_grouping.add_condition(Condition.new(attribute: 'driver_name', value: '222'))
29
- end
30
- grouping.add_grouping do |new_grouping|
31
- new_grouping.add_condition(Condition.new(attribute: 'document_number', value: '333'))
32
- new_grouping.add_condition(Condition.new(attribute: 'driver_name', value: '444'))
33
- end
34
- end
35
- end
36
-
37
23
  end
@@ -1,7 +1,7 @@
1
1
  # encoding: utf-8
2
2
  FactoryGirl.define do
3
3
 
4
- factory :condition do
4
+ factory :ransack_condition do
5
5
  id 1
6
6
  attribute 'attribute'
7
7
  value 'value'
@@ -19,4 +19,4 @@ FactoryGirl.define do
19
19
  end
20
20
  end
21
21
 
22
- end
22
+ end
@@ -1,16 +1,16 @@
1
1
  # encoding: utf-8
2
2
  FactoryGirl.define do
3
3
 
4
- factory :grouping do
4
+ factory :ransack_grouping do
5
5
  id 1
6
6
 
7
7
  trait :complex do
8
8
  combinator :or
9
9
  after(:build) do |obj|
10
- grouping = FactoryGirl.build(:grouping, :with_conditions)
10
+ grouping = FactoryGirl.build(:ransack_grouping, :with_conditions)
11
11
  grouping.id = 2
12
12
  obj.add_grouping(grouping)
13
- grouping = FactoryGirl.build(:grouping, :with_conditions)
13
+ grouping = FactoryGirl.build(:ransack_grouping, :with_conditions)
14
14
  grouping.id = 3
15
15
  obj.add_grouping(grouping)
16
16
  end
@@ -19,11 +19,11 @@ FactoryGirl.define do
19
19
  trait :with_conditions do
20
20
  id 2
21
21
  after(:build) do |obj|
22
- obj.add_condition FactoryGirl.build(:condition, :document_number)
23
- obj.add_condition FactoryGirl.build(:condition, :driver_name)
22
+ obj.add_condition FactoryGirl.build(:ransack_condition, :document_number)
23
+ obj.add_condition FactoryGirl.build(:ransack_condition, :driver_name)
24
24
  end
25
25
  end
26
26
 
27
27
  end
28
28
 
29
- end
29
+ end
@@ -0,0 +1,50 @@
1
+ require 'spec_helper'
2
+
3
+ describe RansackCondition do
4
+ let(:condition) { FactoryGirl.build(:ransack_condition) }
5
+ let(:condition_hash) { FactoryGirl.build(:condition_hash) }
6
+
7
+ it 'should have an id' do
8
+ expect(subject.id).to_not be_nil
9
+ end
10
+
11
+ it 'should have a default predicate of eq' do
12
+ expect(subject.predicate).to eq :eq
13
+ end
14
+
15
+ it 'should accept a predicate' do
16
+ expect(lambda { subject.predicate = :eq }).to_not raise_error
17
+ end
18
+
19
+ it 'should accept an attribute' do
20
+ expect(lambda { subject.attribute = 'attribute' }).to_not raise_error
21
+ end
22
+
23
+ it 'should accept a value' do
24
+ expect(lambda { subject.value = 'value' }).to_not raise_error
25
+ end
26
+
27
+ it 'should accept setting the attribute via the initializer' do
28
+ expect(RansackCondition.new(attribute: 'new_attribute').attribute).to eq 'new_attribute'
29
+ end
30
+
31
+ it 'should accept setting the value via the initializer' do
32
+ expect(RansackCondition.new(value: 'new_value').value).to eq 'new_value'
33
+ end
34
+
35
+ it 'should accept setting the predicate via the initializer' do
36
+ expect(RansackCondition.new(predicate: 'new_predicate').predicate).to eq 'new_predicate'
37
+ end
38
+
39
+ it 'should allow initializing via a block' do
40
+ id = nil
41
+ new_condition = RansackCondition.new do |condition|
42
+ id = condition.id
43
+ end
44
+ expect(id).to eq new_condition.id
45
+ end
46
+
47
+ it 'should build a ransack hash' do
48
+ expect(condition.ransackify).to eq condition_hash
49
+ end
50
+ end
@@ -0,0 +1,104 @@
1
+ require 'spec_helper'
2
+
3
+ describe RansackGrouping do
4
+ subject { FactoryGirl.build(:ransack_grouping) }
5
+ let(:complex) { FactoryGirl.build(:ransack_grouping, :complex) }
6
+ let(:with_conditions) { FactoryGirl.build(:grouping, :with_conditions) }
7
+
8
+ it 'should have an id' do
9
+ expect(subject.id).to_not be_nil
10
+ end
11
+
12
+ it 'should have a default combinator of and' do
13
+ expect(subject.combinator).to eq :and
14
+ end
15
+
16
+ it 'should return a accept setting combinator' do
17
+ expect(lambda { subject.combinator = :and }).to_not raise_error
18
+ end
19
+
20
+ it 'should allow you to add a condition' do
21
+ subject.add_condition(RansackCondition.new({attribute: 'location_code', value: '001', predicate: 'eq'}))
22
+ expect(subject.conditions.size).to eq 1
23
+ end
24
+
25
+ it 'should allow adding conditions through chaining' do
26
+ subject.add_condition(RansackCondition.new(attribute: 'location_code', value: '001', predicate: 'eq')).
27
+ add_condition(RansackCondition.new(attribute: 'location_code', value: '002', predicate: 'eq'))
28
+ expect(subject.conditions.size).to eq 2
29
+ end
30
+
31
+ it 'should allow adding groupings' do
32
+ subject.add_grouping(RansackGrouping.new)
33
+ expect(subject.groupings.size).to eq 1
34
+ end
35
+
36
+ it 'should allow adding groupings through chaining' do
37
+ subject.add_grouping(RansackGrouping.new).
38
+ add_grouping(RansackGrouping.new)
39
+ expect(subject.groupings.size).to eq 2
40
+ end
41
+
42
+ it 'should allow adding groupings without chaining' do
43
+ subject.add_grouping(RansackGrouping.new)
44
+ subject.add_grouping(RansackGrouping.new)
45
+ expect(subject.groupings.size).to eq 2
46
+ end
47
+
48
+ it 'should allow building a group via a block' do
49
+ g = RansackGrouping.new do |grouping|
50
+ grouping.combinator = :or
51
+ grouping.add_grouping do |new_grouping|
52
+ new_grouping.add_condition(RansackCondition.new(attribute: 'ItemNumber', value: 'RC')).
53
+ add_condition(RansackCondition.new(attribute: 'LocationCode', value: '002'))
54
+ end
55
+ grouping.add_grouping do |new_grouping|
56
+ new_grouping.add_condition(RansackCondition.new(attribute: 'ItemNumber', value: 'RC')).
57
+ add_condition(RansackCondition.new(attribute: 'LocationCode', value: '001'))
58
+ end
59
+ end
60
+
61
+ expect(g.groupings.size).to eq 2
62
+ end
63
+
64
+ it 'should allow adding conditions en masse' do
65
+ subject.add_conditions(
66
+ [RansackCondition.new(attribute: 'location_code', value: '001', predicate: 'eq'),
67
+ RansackCondition.new(attribute: 'location_code', value: '001', predicate: 'eq')])
68
+ expect(subject.conditions.size).to eq 2
69
+ end
70
+
71
+ it 'should allow adding groupings en masse' do
72
+ subject.add_groupings([RansackGrouping.new, RansackGrouping.new])
73
+ expect(subject.groupings.size).to eq 2
74
+ end
75
+
76
+ it 'should allow adding a condition via a block' do
77
+ klass = nil
78
+ subject.add_condition do |condition|
79
+ klass = condition.class
80
+ end
81
+ expect(klass).to eq RansackCondition
82
+ end
83
+
84
+ it 'should allow adding a group via a block' do
85
+ klass = nil
86
+ subject.add_grouping do |grouping|
87
+ klass = grouping.class
88
+ end
89
+ expect(klass).to eq RansackGrouping
90
+ end
91
+
92
+ it 'should allow initializing via a block' do
93
+ id = nil
94
+ grouping = RansackGrouping.new do |grp|
95
+ id = grp.id
96
+ end
97
+ expect(id).to eq grouping.id
98
+ end
99
+
100
+ it 'should build a complex ransack hash' do
101
+ expect(complex.ransackify).to eq FactoryGirl.build(:grouping_hash)
102
+ end
103
+
104
+ end
@@ -2,7 +2,7 @@ require 'spec_helper'
2
2
 
3
3
  describe RansackQuery do
4
4
  it 'should not build without a block' do
5
- lambda { RansackQuery.build }.should raise_error
5
+ expect(lambda { RansackQuery.build }).to raise_error
6
6
  end
7
7
 
8
8
  it 'should return a grouping to build off' do
@@ -10,40 +10,42 @@ describe RansackQuery do
10
10
  RansackQuery.build do |grouping|
11
11
  klass = grouping.class
12
12
  end
13
- klass.should equal Grouping
13
+ expect(klass).to eq RansackGrouping
14
14
  end
15
15
 
16
16
  it 'should return a hash' do
17
- RansackQuery.build do |grouping|
17
+ result = RansackQuery.build do |grouping|
18
18
  grouping.id = 'id1'
19
19
  grouping.add_condition do |condition|
20
20
  condition.id = 'id2'
21
21
  condition.attribute = 'attribute'
22
22
  condition.value = 'value'
23
23
  end
24
- end.should eq({'g' => {'id1' => {'m' => 'and', 'c' => {'id2' => {'a' => {'0' => {'name' => 'attribute'}}, 'p' => 'eq', 'v' => {'0' => {'value' => 'value'}}}}}}})
24
+ end
25
+ expect(result).to eq({'g' => {'id1' => {'m' => 'and', 'c' => {'id2' => {'a' => {'0' => {'name' => 'attribute'}}, 'p' => 'eq', 'v' => {'0' => {'value' => 'value'}}}}}}})
25
26
  end
26
27
 
27
28
  it 'should return a json string if specified' do
28
- RansackQuery.build(format: :json) do |grouping|
29
+ result = RansackQuery.build(format: :json) do |grouping|
29
30
  grouping.id = 'id1'
30
31
  grouping.add_condition do |condition|
31
32
  condition.id = 'id2'
32
33
  condition.attribute = 'attribute'
33
34
  condition.value = 'value'
34
35
  end
35
- end.should eq "{\"g\":{\"id1\":{\"m\":\"and\",\"c\":{\"id2\":{\"a\":{\"0\":{\"name\":\"attribute\"}},\"p\":\"eq\",\"v\":{\"0\":{\"value\":\"value\"}}}}}}}"
36
+ end
37
+ expect(result).to eq "{\"g\":{\"id1\":{\"m\":\"and\",\"c\":{\"id2\":{\"a\":{\"0\":{\"name\":\"attribute\"}},\"p\":\"eq\",\"v\":{\"0\":{\"value\":\"value\"}}}}}}}"
36
38
  end
37
39
 
38
40
  it 'should allow a prefix to be passed in' do
39
- RansackQuery.build(prefix: 'q') do |grouping|
41
+ result = RansackQuery.build(prefix: 'q') do |grouping|
40
42
  grouping.id = 'id1'
41
43
  grouping.add_condition do |condition|
42
44
  condition.id = 'id2'
43
45
  condition.attribute = 'attribute'
44
46
  condition.value = 'value'
45
47
  end
46
- end.should eq({'q' => {'g' => {'id1' => {'m' => 'and', 'c' => {'id2' => {'a' => {'0' => {'name' => 'attribute'}}, 'p' => 'eq', 'v' => {'0' => {'value' => 'value'}}}}}}}})
48
+ end
49
+ expect(result).to eq({'q' => {'g' => {'id1' => {'m' => 'and', 'c' => {'id2' => {'a' => {'0' => {'name' => 'attribute'}}, 'p' => 'eq', 'v' => {'0' => {'value' => 'value'}}}}}}}})
47
50
  end
48
-
49
- end
51
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ransack_query
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Frank West
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-06-03 00:00:00.000000000 Z
11
+ date: 2014-09-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -160,21 +160,22 @@ extra_rdoc_files: []
160
160
  files:
161
161
  - ".gitignore"
162
162
  - ".rspec"
163
+ - CHANGELOG.md
163
164
  - Gemfile
164
165
  - Guardfile
165
166
  - LICENSE.txt
166
167
  - README.md
167
168
  - Rakefile
168
- - lib/condition.rb
169
- - lib/grouping.rb
169
+ - lib/ransack_condition.rb
170
+ - lib/ransack_grouping.rb
170
171
  - lib/ransack_query.rb
171
172
  - lib/ransack_query/version.rb
172
173
  - ransack_query.gemspec
173
- - spec/factories/condition.rb
174
- - spec/factories/grouping.rb
175
174
  - spec/factories/hash.rb
176
- - spec/models/condition_spec.rb
177
- - spec/models/grouping_spec.rb
175
+ - spec/factories/ransack_condition.rb
176
+ - spec/factories/ransack_grouping.rb
177
+ - spec/models/ransack_condition_spec.rb
178
+ - spec/models/ransack_grouping_spec.rb
178
179
  - spec/models/ransack_query_spec.rb
179
180
  - spec/spec_helper.rb
180
181
  homepage: https://github.com/frank-west-iii/ransack_query
@@ -202,10 +203,11 @@ signing_key:
202
203
  specification_version: 4
203
204
  summary: Provides a way to build advanced ransack queries.
204
205
  test_files:
205
- - spec/factories/condition.rb
206
- - spec/factories/grouping.rb
207
206
  - spec/factories/hash.rb
208
- - spec/models/condition_spec.rb
209
- - spec/models/grouping_spec.rb
207
+ - spec/factories/ransack_condition.rb
208
+ - spec/factories/ransack_grouping.rb
209
+ - spec/models/ransack_condition_spec.rb
210
+ - spec/models/ransack_grouping_spec.rb
210
211
  - spec/models/ransack_query_spec.rb
211
212
  - spec/spec_helper.rb
213
+ has_rdoc:
@@ -1,51 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Condition do
4
- let(:condition) { FactoryGirl.build(:condition) }
5
- let(:condition_hash) { FactoryGirl.build(:condition_hash) }
6
-
7
- it 'should have an id' do
8
- subject.id.should_not be nil
9
- end
10
-
11
- it 'should have a default predicate of eq' do
12
- subject.predicate.should eq :eq
13
- end
14
-
15
- it 'should accept a predicate' do
16
- lambda { subject.predicate = :eq }.should_not raise_error
17
- end
18
-
19
- it 'should accept an attribute' do
20
- lambda { subject.attribute = 'attribute' }.should_not raise_error
21
- end
22
-
23
- it 'should accept a value' do
24
- lambda { subject.value = 'value' }.should_not raise_error
25
- end
26
-
27
- it 'should accept setting the attribute via the initializer' do
28
- Condition.new(attribute: 'new_attribute').attribute.should eq 'new_attribute'
29
- end
30
-
31
- it 'should accept setting the value via the initializer' do
32
- Condition.new(value: 'new_value').value.should eq 'new_value'
33
- end
34
-
35
- it 'should accept setting the predicate via the initializer' do
36
- Condition.new(predicate: 'new_predicate').predicate.should eq 'new_predicate'
37
- end
38
-
39
- it 'should allow initializing via a block' do
40
- id = nil
41
- new_condition = Condition.new do |condition|
42
- id = condition.id
43
- end
44
- id.should eq new_condition.id
45
- end
46
-
47
- it 'should build a ransack hash' do
48
- condition.ransackify.should eq condition_hash
49
- end
50
-
51
- end
@@ -1,104 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Grouping do
4
- subject { FactoryGirl.build(:grouping) }
5
- let(:complex) { FactoryGirl.build(:grouping, :complex) }
6
- let(:with_conditions) { FactoryGirl.build(:grouping, :with_conditions) }
7
-
8
- it 'should have an id' do
9
- subject.id.should_not be nil
10
- end
11
-
12
- it 'should have a default combinator of and' do
13
- subject.combinator.should eq :and
14
- end
15
-
16
- it 'should return a accept setting combinator' do
17
- lambda { subject.combinator = :and }.should_not raise_error
18
- end
19
-
20
- it 'should allow you to add a condition' do
21
- subject.add_condition({attribute: 'location_code', value: '001', predicate: 'eq'})
22
- subject.conditions.size.should eq 1
23
- end
24
-
25
- it 'should allow adding conditions through chaining' do
26
- subject.add_condition(Condition.new(attribute: 'location_code', value: '001', predicate: 'eq')).
27
- add_condition(Condition.new(attribute: 'location_code', value: '002', predicate: 'eq'))
28
- subject.conditions.size.should eq 2
29
- end
30
-
31
- it 'should allow adding groupings' do
32
- subject.add_grouping(Grouping.new)
33
- subject.groupings.size.should eq 1
34
- end
35
-
36
- it 'should allow adding groupings through chaining' do
37
- subject.add_grouping(Grouping.new).
38
- add_grouping(Grouping.new)
39
- subject.groupings.size.should eq 2
40
- end
41
-
42
- it 'should allow adding groupings without chaining' do
43
- subject.add_grouping(Grouping.new)
44
- subject.add_grouping(Grouping.new)
45
- subject.groupings.size.should eq 2
46
- end
47
-
48
- it 'should do stuff' do
49
- g = Grouping.new do |grouping|
50
- grouping.combinator = :or
51
- grouping.add_grouping do |new_grouping|
52
- new_grouping.add_condition(Condition.new(attribute: 'ItemNumber', value: 'RC')).
53
- add_condition(Condition.new(attribute: 'LocationCode', value: '002'))
54
- end
55
- grouping.add_grouping do |new_grouping|
56
- new_grouping.add_condition(Condition.new(attribute: 'ItemNumber', value: 'RC')).
57
- add_condition(Condition.new(attribute: 'LocationCode', value: '001'))
58
- end
59
- end
60
-
61
- g.groupings.size.should eq 2
62
- end
63
-
64
- it 'should allow adding conditions en masse' do
65
- subject.add_conditions(
66
- [Condition.new(attribute: 'location_code', value: '001', predicate: 'eq'),
67
- Condition.new(attribute: 'location_code', value: '001', predicate: 'eq')])
68
- subject.conditions.size.should eq 2
69
- end
70
-
71
- it 'should allow adding groupings en masse' do
72
- subject.add_groupings([Grouping.new, Grouping.new])
73
- subject.groupings.size.should eq 2
74
- end
75
-
76
- it 'should allow adding a condition via a block' do
77
- klass = nil
78
- subject.add_condition do |condition|
79
- klass = condition.class
80
- end
81
- klass.should eq Condition
82
- end
83
-
84
- it 'should allow adding a group via a block' do
85
- klass = nil
86
- subject.add_grouping do |grouping|
87
- klass = grouping.class
88
- end
89
- klass.should eq Grouping
90
- end
91
-
92
- it 'should allow initializing via a block' do
93
- id = nil
94
- grouping = Grouping.new do |grouping|
95
- id = grouping.id
96
- end
97
- id.should eq grouping.id
98
- end
99
-
100
- it 'should build a complex ransack hash' do
101
- complex.ransackify.should eq FactoryGirl.build(:grouping_hash)
102
- end
103
-
104
- end