mundane-search 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (65) hide show
  1. data/Guardfile +11 -0
  2. data/README.md +61 -9
  3. data/Rakefile +1 -1
  4. data/bin/coderay +16 -0
  5. data/bin/erubis +16 -0
  6. data/bin/guard +16 -0
  7. data/bin/pry +16 -0
  8. data/bin/rackup +16 -0
  9. data/bin/rake +1 -1
  10. data/bin/sprockets +16 -0
  11. data/bin/thor +16 -0
  12. data/bin/tilt +16 -0
  13. data/lib/columns_hash.rb +38 -0
  14. data/lib/mundane-search.rb +14 -6
  15. data/lib/mundane-search/buildable.rb +25 -0
  16. data/lib/mundane-search/builder.rb +32 -18
  17. data/lib/mundane-search/filter_canister.rb +27 -3
  18. data/lib/mundane-search/filters.rb +7 -8
  19. data/lib/mundane-search/filters/attribute_match.rb +6 -7
  20. data/lib/mundane-search/filters/attribute_substring.rb +14 -0
  21. data/lib/mundane-search/filters/base.rb +5 -2
  22. data/lib/mundane-search/filters/blank_params_are_nil.rb +1 -1
  23. data/lib/mundane-search/filters/operator.rb +18 -0
  24. data/lib/mundane-search/filters/shortcuts.rb +33 -0
  25. data/lib/mundane-search/filters/typical.rb +28 -3
  26. data/lib/mundane-search/initial_stack.rb +13 -0
  27. data/lib/mundane-search/railtie.rb +7 -0
  28. data/lib/mundane-search/result.rb +23 -8
  29. data/lib/mundane-search/result_model.rb +65 -0
  30. data/lib/mundane-search/stack.rb +38 -0
  31. data/lib/mundane-search/version.rb +1 -1
  32. data/lib/mundane-search/view_helpers.rb +24 -0
  33. data/mundane-search.gemspec +7 -0
  34. data/script/console +6 -0
  35. data/spec/active_record_setup.rb +2 -45
  36. data/spec/buildable_integration_spec.rb +14 -0
  37. data/spec/buildable_spec.rb +19 -0
  38. data/spec/builder_integration_spec.rb +26 -5
  39. data/spec/builder_spec.rb +13 -18
  40. data/spec/columns_hash_spec.rb +37 -0
  41. data/spec/demo_data.rb +50 -0
  42. data/spec/filter_canister_spec.rb +46 -0
  43. data/spec/filters/attribute_match_integration_spec.rb +2 -2
  44. data/spec/filters/attribute_match_spec.rb +27 -0
  45. data/spec/filters/attribute_substring_spec.rb +27 -0
  46. data/spec/filters/base_spec.rb +39 -7
  47. data/spec/filters/blank_params_are_nil_spec.rb +11 -0
  48. data/spec/filters/operator_integration_spec.rb +20 -0
  49. data/spec/filters/operator_spec.rb +28 -0
  50. data/spec/filters/shortcuts_integration_spec.rb +16 -0
  51. data/spec/filters/shortcuts_spec.rb +15 -0
  52. data/spec/filters/typical_spec.rb +68 -0
  53. data/spec/form_integration_spec.rb +29 -0
  54. data/spec/initial_stack_spec.rb +13 -0
  55. data/spec/minitest_helper.rb +93 -4
  56. data/spec/result_integration_spec.rb +24 -0
  57. data/spec/result_model_spec.rb +50 -0
  58. data/spec/result_spec.rb +10 -28
  59. data/spec/search_form_for_integration_spec.rb +19 -0
  60. data/spec/simple_form_integration_spec.rb +36 -0
  61. data/spec/simple_search_form_for_integration_spec.rb +25 -0
  62. data/spec/stack_spec.rb +40 -0
  63. metadata +167 -6
  64. data/lib/mundane-search/filters/helpers.rb +0 -44
  65. data/lib/mundane-search/initial_result.rb +0 -7
@@ -0,0 +1,40 @@
1
+ require_relative 'minitest_helper'
2
+
3
+ describe MundaneSearch::Stack do
4
+
5
+ let(:initial) { MundaneSearch::InitialStack.new(collection, params) }
6
+ let(:result) { MundaneSearch::Stack.new(initial, filter_canister) }
7
+
8
+ let(:filter) do
9
+ filter = MiniTest::Mock.new
10
+ def filter.call ; [%w(foo bar baz), { 'foo' => 'bar' }] ; end
11
+ filter
12
+ end
13
+ let(:filter_canister) do
14
+ fc = Object.new
15
+ fc.stubs(:build).returns(filter)
16
+ fc
17
+ end
18
+
19
+ it "should show collection" do
20
+ result.collection.must_equal collection
21
+ end
22
+
23
+ it "should show params" do
24
+ result.params.must_equal params
25
+ end
26
+
27
+ it "should add canister to create new stack" do
28
+ new_result = result.add(filter_canister)
29
+ new_result.must_be_kind_of result.class
30
+ new_result.wont_equal result
31
+ end
32
+
33
+ describe "all filters" do
34
+ it "should list own filter" do
35
+ result = MundaneSearch::Stack.new(initial, filter_canister)
36
+ result.expects(:filter).returns(filter)
37
+ result.all_filters.must_equal [filter]
38
+ end
39
+ end
40
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mundane-search
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,8 +9,24 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-03-19 00:00:00.000000000 Z
12
+ date: 2013-05-03 00:00:00.000000000 Z
13
13
  dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: activemodel
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
14
30
  - !ruby/object:Gem::Dependency
15
31
  name: minitest
16
32
  requirement: !ruby/object:Gem::Requirement
@@ -27,6 +43,22 @@ dependencies:
27
43
  - - ! '>='
28
44
  - !ruby/object:Gem::Version
29
45
  version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: mocha
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
30
62
  - !ruby/object:Gem::Dependency
31
63
  name: rake
32
64
  requirement: !ruby/object:Gem::Requirement
@@ -91,45 +123,154 @@ dependencies:
91
123
  - - ! '>='
92
124
  - !ruby/object:Gem::Version
93
125
  version: '0'
126
+ - !ruby/object:Gem::Dependency
127
+ name: actionpack
128
+ requirement: !ruby/object:Gem::Requirement
129
+ none: false
130
+ requirements:
131
+ - - ! '>='
132
+ - !ruby/object:Gem::Version
133
+ version: '0'
134
+ type: :development
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ! '>='
140
+ - !ruby/object:Gem::Version
141
+ version: '0'
142
+ - !ruby/object:Gem::Dependency
143
+ name: simple_form
144
+ requirement: !ruby/object:Gem::Requirement
145
+ none: false
146
+ requirements:
147
+ - - ! '>='
148
+ - !ruby/object:Gem::Version
149
+ version: '0'
150
+ type: :development
151
+ prerelease: false
152
+ version_requirements: !ruby/object:Gem::Requirement
153
+ none: false
154
+ requirements:
155
+ - - ! '>='
156
+ - !ruby/object:Gem::Version
157
+ version: '0'
158
+ - !ruby/object:Gem::Dependency
159
+ name: guard
160
+ requirement: !ruby/object:Gem::Requirement
161
+ none: false
162
+ requirements:
163
+ - - ! '>='
164
+ - !ruby/object:Gem::Version
165
+ version: '0'
166
+ type: :development
167
+ prerelease: false
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ none: false
170
+ requirements:
171
+ - - ! '>='
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ - !ruby/object:Gem::Dependency
175
+ name: guard-minitest
176
+ requirement: !ruby/object:Gem::Requirement
177
+ none: false
178
+ requirements:
179
+ - - ! '>='
180
+ - !ruby/object:Gem::Version
181
+ version: '0'
182
+ type: :development
183
+ prerelease: false
184
+ version_requirements: !ruby/object:Gem::Requirement
185
+ none: false
186
+ requirements:
187
+ - - ! '>='
188
+ - !ruby/object:Gem::Version
189
+ version: '0'
94
190
  description: Makes everyday search easy-ish.
95
191
  email:
96
192
  - samsm@samsm.com
97
193
  executables:
194
+ - coderay
195
+ - erubis
196
+ - guard
197
+ - pry
198
+ - rackup
98
199
  - rake
200
+ - sprockets
201
+ - thor
202
+ - tilt
99
203
  extensions: []
100
204
  extra_rdoc_files: []
101
205
  files:
102
206
  - .gitignore
103
207
  - Gemfile
208
+ - Guardfile
104
209
  - LICENSE.txt
105
210
  - README.md
106
211
  - Rakefile
212
+ - bin/coderay
213
+ - bin/erubis
214
+ - bin/guard
215
+ - bin/pry
216
+ - bin/rackup
107
217
  - bin/rake
218
+ - bin/sprockets
219
+ - bin/thor
220
+ - bin/tilt
221
+ - lib/columns_hash.rb
108
222
  - lib/mundane-search.rb
223
+ - lib/mundane-search/buildable.rb
109
224
  - lib/mundane-search/builder.rb
110
225
  - lib/mundane-search/filter_canister.rb
111
226
  - lib/mundane-search/filters.rb
112
227
  - lib/mundane-search/filters/attribute_match.rb
228
+ - lib/mundane-search/filters/attribute_substring.rb
113
229
  - lib/mundane-search/filters/base.rb
114
230
  - lib/mundane-search/filters/blank_params_are_nil.rb
115
231
  - lib/mundane-search/filters/exact_match.rb
116
- - lib/mundane-search/filters/helpers.rb
232
+ - lib/mundane-search/filters/operator.rb
233
+ - lib/mundane-search/filters/shortcuts.rb
117
234
  - lib/mundane-search/filters/typical.rb
118
- - lib/mundane-search/initial_result.rb
235
+ - lib/mundane-search/initial_stack.rb
236
+ - lib/mundane-search/railtie.rb
119
237
  - lib/mundane-search/result.rb
238
+ - lib/mundane-search/result_model.rb
239
+ - lib/mundane-search/stack.rb
120
240
  - lib/mundane-search/version.rb
241
+ - lib/mundane-search/view_helpers.rb
121
242
  - mundane-search.gemspec
122
243
  - script/console
123
244
  - spec/active_record_setup.rb
245
+ - spec/buildable_integration_spec.rb
246
+ - spec/buildable_spec.rb
124
247
  - spec/builder_integration_spec.rb
125
248
  - spec/builder_spec.rb
249
+ - spec/columns_hash_spec.rb
250
+ - spec/demo_data.rb
251
+ - spec/filter_canister_spec.rb
126
252
  - spec/filters/attribute_match_integration_spec.rb
127
253
  - spec/filters/attribute_match_spec.rb
254
+ - spec/filters/attribute_substring_spec.rb
128
255
  - spec/filters/base_spec.rb
256
+ - spec/filters/blank_params_are_nil_spec.rb
129
257
  - spec/filters/exact_match_spec.rb
258
+ - spec/filters/operator_integration_spec.rb
259
+ - spec/filters/operator_spec.rb
260
+ - spec/filters/shortcuts_integration_spec.rb
261
+ - spec/filters/shortcuts_spec.rb
262
+ - spec/filters/typical_spec.rb
130
263
  - spec/filters_spec.rb
264
+ - spec/form_integration_spec.rb
265
+ - spec/initial_stack_spec.rb
131
266
  - spec/minitest_helper.rb
267
+ - spec/result_integration_spec.rb
268
+ - spec/result_model_spec.rb
132
269
  - spec/result_spec.rb
270
+ - spec/search_form_for_integration_spec.rb
271
+ - spec/simple_form_integration_spec.rb
272
+ - spec/simple_search_form_for_integration_spec.rb
273
+ - spec/stack_spec.rb
133
274
  homepage: https://github.com/samsm/mundane-search
134
275
  licenses: []
135
276
  post_install_message:
@@ -144,7 +285,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
144
285
  version: '0'
145
286
  segments:
146
287
  - 0
147
- hash: 1695916401118151640
288
+ hash: -4254395737755402307
148
289
  required_rubygems_version: !ruby/object:Gem::Requirement
149
290
  none: false
150
291
  requirements:
@@ -153,7 +294,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
153
294
  version: '0'
154
295
  segments:
155
296
  - 0
156
- hash: 1695916401118151640
297
+ hash: -4254395737755402307
157
298
  requirements: []
158
299
  rubyforge_project:
159
300
  rubygems_version: 1.8.25
@@ -162,12 +303,32 @@ specification_version: 3
162
303
  summary: Makes everyday search easy-ish.
163
304
  test_files:
164
305
  - spec/active_record_setup.rb
306
+ - spec/buildable_integration_spec.rb
307
+ - spec/buildable_spec.rb
165
308
  - spec/builder_integration_spec.rb
166
309
  - spec/builder_spec.rb
310
+ - spec/columns_hash_spec.rb
311
+ - spec/demo_data.rb
312
+ - spec/filter_canister_spec.rb
167
313
  - spec/filters/attribute_match_integration_spec.rb
168
314
  - spec/filters/attribute_match_spec.rb
315
+ - spec/filters/attribute_substring_spec.rb
169
316
  - spec/filters/base_spec.rb
317
+ - spec/filters/blank_params_are_nil_spec.rb
170
318
  - spec/filters/exact_match_spec.rb
319
+ - spec/filters/operator_integration_spec.rb
320
+ - spec/filters/operator_spec.rb
321
+ - spec/filters/shortcuts_integration_spec.rb
322
+ - spec/filters/shortcuts_spec.rb
323
+ - spec/filters/typical_spec.rb
171
324
  - spec/filters_spec.rb
325
+ - spec/form_integration_spec.rb
326
+ - spec/initial_stack_spec.rb
172
327
  - spec/minitest_helper.rb
328
+ - spec/result_integration_spec.rb
329
+ - spec/result_model_spec.rb
173
330
  - spec/result_spec.rb
331
+ - spec/search_form_for_integration_spec.rb
332
+ - spec/simple_form_integration_spec.rb
333
+ - spec/simple_search_form_for_integration_spec.rb
334
+ - spec/stack_spec.rb
@@ -1,44 +0,0 @@
1
- module MundaneSearch::Filters::Helpers
2
- def self.included(base)
3
- base.send :extend, ClassMethods
4
- end
5
-
6
- module ClassMethods
7
- def optional_unless_required
8
- include Optional
9
- end
10
-
11
- def optional_without_match_value
12
- include OptionalWithoutMatchValue
13
- end
14
-
15
- def has_a_match_value
16
- include MatchValue
17
- end
18
-
19
- end
20
-
21
-
22
- module Optional
23
- def optional?
24
- options[:required]
25
- end
26
- end
27
-
28
- module OptionalWithoutMatchValue
29
- include Optional
30
- def apply?
31
- match_value || optional?
32
- end
33
- end
34
-
35
- module MatchValue
36
- def param_key
37
- options.fetch(:param_key)
38
- end
39
-
40
- def match_value
41
- params[param_key]
42
- end
43
- end
44
- end
@@ -1,7 +0,0 @@
1
- module MundaneSearch
2
- class InitialResult < Result
3
- def initialize(collection,params)
4
- @collection, @params = collection, params
5
- end
6
- end
7
- end