mundane-search 0.0.1 → 0.0.2

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 (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