where_conditioner 1.0.0 → 1.1.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.
- checksums.yaml +4 -4
- data/lib/where_conditioner.rb +6 -0
- data/spec/lib/where_conditioner_spec.rb +66 -0
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c44ce09a4fe3727fe41e7db71d8dc99635964804
|
4
|
+
data.tar.gz: 8ee269cec9b22ef62b15669b4b61a1f4ed03aeee
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c266e1cb927721587d933c59b39461acffa37c854052d45785cb2e5899a55b8d091157ed275bf3ea7965539b65df433f4f29433d9efefd80dfc97b69fb88403c
|
7
|
+
data.tar.gz: 8797fabf41f090281b204ed1df708f76458334ae49ec23e44595c914f120765c410a7c0b620e5b2dccb44ff294e353960715722046c6ab2738de709f394dda3d
|
data/lib/where_conditioner.rb
CHANGED
@@ -24,6 +24,12 @@ module WhereConditioner
|
|
24
24
|
conditional !@last_condition, &block
|
25
25
|
end
|
26
26
|
|
27
|
+
def elsif condition, &block
|
28
|
+
result = conditional (!@last_condition && condition), &block
|
29
|
+
@last_condition = condition
|
30
|
+
result
|
31
|
+
end
|
32
|
+
|
27
33
|
def where_if_present *args
|
28
34
|
if Hash === args.first && args.length == 1
|
29
35
|
hash = args.first.compact
|
@@ -132,4 +132,70 @@ describe WhereConditioner do
|
|
132
132
|
end
|
133
133
|
end
|
134
134
|
end
|
135
|
+
|
136
|
+
describe '#elsif' do
|
137
|
+
context 'chained' do
|
138
|
+
context 'with true, true condition' do
|
139
|
+
it 'passes method calls to relation' do
|
140
|
+
expect(relation).to receive(:foo).and_return(relation)
|
141
|
+
expect(relation).to receive(:baz)
|
142
|
+
relation.if(true).foo.elsif(true).bar.baz
|
143
|
+
end
|
144
|
+
end
|
145
|
+
|
146
|
+
context 'with false, true condition' do
|
147
|
+
it 'passes method calls to relation' do
|
148
|
+
expect(relation).to receive_message_chain(:bar, :baz)
|
149
|
+
relation.if(false).foo.elsif(true).bar.baz
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
context 'with false, false condition' do
|
154
|
+
it 'passes method calls to relation' do
|
155
|
+
expect(relation).to receive(:baz)
|
156
|
+
relation.if(false).foo.elsif(false).bar.baz
|
157
|
+
end
|
158
|
+
end
|
159
|
+
|
160
|
+
context 'with true, false condition' do
|
161
|
+
it 'passes method calls to relation' do
|
162
|
+
expect(relation).to receive(:foo).and_return(relation)
|
163
|
+
expect(relation).to receive(:baz)
|
164
|
+
relation.if(true).foo.elsif(false).bar.baz
|
165
|
+
end
|
166
|
+
end
|
167
|
+
end
|
168
|
+
|
169
|
+
context 'with a block' do
|
170
|
+
context 'with true, true condition' do
|
171
|
+
it 'passes method calls to relation' do
|
172
|
+
expect(relation).to receive(:foo).and_return(relation)
|
173
|
+
expect(relation).to receive(:moop)
|
174
|
+
relation.if(true).foo.elsif(true) { bar.baz }.moop
|
175
|
+
end
|
176
|
+
end
|
177
|
+
|
178
|
+
context 'with false, true condition' do
|
179
|
+
it 'passes method calls to relation' do
|
180
|
+
expect(relation).to receive_message_chain(:bar, :baz, :moop)
|
181
|
+
relation.if(false).foo.elsif(true) { bar.baz }.moop
|
182
|
+
end
|
183
|
+
end
|
184
|
+
|
185
|
+
context 'with false, false condition' do
|
186
|
+
it 'passes method calls to relation' do
|
187
|
+
expect(relation).to receive(:moop)
|
188
|
+
relation.if(false).foo.elsif(false) { bar.baz }.moop
|
189
|
+
end
|
190
|
+
end
|
191
|
+
|
192
|
+
context 'with true, false condition' do
|
193
|
+
it 'passes method calls to relation' do
|
194
|
+
expect(relation).to receive(:foo).and_return(relation)
|
195
|
+
expect(relation).to receive(:moop)
|
196
|
+
relation.if(true).foo.elsif(false) { bar.baz }.moop
|
197
|
+
end
|
198
|
+
end
|
199
|
+
end
|
200
|
+
end
|
135
201
|
end
|
metadata
CHANGED
@@ -1,14 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: where_conditioner
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tony Novak
|
8
|
+
- Jonathan Aizen
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date: 2014-
|
12
|
+
date: 2014-05-21 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: activerecord
|
@@ -71,7 +72,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
71
72
|
version: '0'
|
72
73
|
requirements: []
|
73
74
|
rubyforge_project:
|
74
|
-
rubygems_version: 2.2.
|
75
|
+
rubygems_version: 2.2.2
|
75
76
|
signing_key:
|
76
77
|
specification_version: 4
|
77
78
|
summary: Where Conditioner
|