searchable_models 0.0.1

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 (70) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +212 -0
  4. data/Rakefile +32 -0
  5. data/lib/searchable_models/searchable.rb +135 -0
  6. data/lib/searchable_models/version.rb +3 -0
  7. data/lib/searchable_models.rb +8 -0
  8. data/lib/tasks/searchable_models_tasks.rake +4 -0
  9. data/test/dummy/README.rdoc +28 -0
  10. data/test/dummy/Rakefile +6 -0
  11. data/test/dummy/app/assets/javascripts/application.js +13 -0
  12. data/test/dummy/app/assets/stylesheets/application.css +15 -0
  13. data/test/dummy/app/controllers/application_controller.rb +5 -0
  14. data/test/dummy/app/helpers/application_helper.rb +2 -0
  15. data/test/dummy/app/models/car.rb +41 -0
  16. data/test/dummy/app/models/component.rb +3 -0
  17. data/test/dummy/app/models/door.rb +4 -0
  18. data/test/dummy/app/models/group.rb +2 -0
  19. data/test/dummy/app/models/provider.rb +2 -0
  20. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  21. data/test/dummy/bin/bundle +3 -0
  22. data/test/dummy/bin/rails +4 -0
  23. data/test/dummy/bin/rake +4 -0
  24. data/test/dummy/config/application.rb +23 -0
  25. data/test/dummy/config/boot.rb +5 -0
  26. data/test/dummy/config/database.yml +25 -0
  27. data/test/dummy/config/environment.rb +5 -0
  28. data/test/dummy/config/environments/development.rb +37 -0
  29. data/test/dummy/config/environments/production.rb +78 -0
  30. data/test/dummy/config/environments/test.rb +42 -0
  31. data/test/dummy/config/initializers/assets.rb +8 -0
  32. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  33. data/test/dummy/config/initializers/cookies_serializer.rb +3 -0
  34. data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  35. data/test/dummy/config/initializers/inflections.rb +16 -0
  36. data/test/dummy/config/initializers/mime_types.rb +4 -0
  37. data/test/dummy/config/initializers/session_store.rb +3 -0
  38. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  39. data/test/dummy/config/locales/en.yml +23 -0
  40. data/test/dummy/config/routes.rb +56 -0
  41. data/test/dummy/config/secrets.yml +22 -0
  42. data/test/dummy/config.ru +4 -0
  43. data/test/dummy/db/migrate/20141113130904_create_cars.rb +15 -0
  44. data/test/dummy/db/migrate/20141113142341_create_groups.rb +9 -0
  45. data/test/dummy/db/migrate/20141113142350_add_group_id_to_cars.rb +5 -0
  46. data/test/dummy/db/migrate/20141113153040_create_doors.rb +10 -0
  47. data/test/dummy/db/migrate/20141114120705_create_providers.rb +9 -0
  48. data/test/dummy/db/migrate/20141114120731_create_components.rb +11 -0
  49. data/test/dummy/db/migrate/20141114120804_add_component_id_to_doors.rb +5 -0
  50. data/test/dummy/db/migrate/20141114122828_acts_as_taggable_on_migration.acts_as_taggable_on_engine.rb +31 -0
  51. data/test/dummy/db/migrate/20141114122829_add_missing_unique_indices.acts_as_taggable_on_engine.rb +20 -0
  52. data/test/dummy/db/migrate/20141114122830_add_taggings_counter_cache_to_tags.acts_as_taggable_on_engine.rb +15 -0
  53. data/test/dummy/db/migrate/20141114122831_add_missing_taggable_index.acts_as_taggable_on_engine.rb +10 -0
  54. data/test/dummy/db/migrate/20141114130703_add_car_translations.rb +9 -0
  55. data/test/dummy/db/schema.rb +28 -0
  56. data/test/dummy/db/test.sqlite3 +0 -0
  57. data/test/dummy/log/test.log +305 -0
  58. data/test/dummy/public/404.html +67 -0
  59. data/test/dummy/public/422.html +67 -0
  60. data/test/dummy/public/500.html +66 -0
  61. data/test/dummy/public/favicon.ico +0 -0
  62. data/test/dummy/test/fixtures/cars.yml +29 -0
  63. data/test/dummy/test/fixtures/components.yml +14 -0
  64. data/test/dummy/test/fixtures/doors.yml +14 -0
  65. data/test/dummy/test/fixtures/groups.yml +5 -0
  66. data/test/dummy/test/fixtures/providers.yml +8 -0
  67. data/test/dummy/test/models/car_test.rb +68 -0
  68. data/test/searchable_models_test.rb +7 -0
  69. data/test/test_helper.rb +34 -0
  70. metadata +274 -0
@@ -0,0 +1,68 @@
1
+ require "test_helper"
2
+
3
+ class CarTest < ActiveSupport::TestCase
4
+ test "search car with fuzzy search on one field" do
5
+ assert_results(Car.search(:brand => "foo"))
6
+ end
7
+
8
+ test "search car with fuzzy search on one field with named param" do
9
+ assert_results(Car.search(:m => "foo"))
10
+ end
11
+
12
+ test "search car with fuzzy search on multiple fields" do
13
+ assert_results(Car.search(:query => "foo"))
14
+ end
15
+
16
+ test "search car with exact search" do
17
+ assert_results(Car.search(:number_of_doors => 2))
18
+ end
19
+
20
+ test "search car with belong_to id" do
21
+ assert_results(Car.search(:group_id => groups(:group_foo).id))
22
+ end
23
+
24
+ test "search car with through" do
25
+ assert_results(Car.search(:component_id => components(:component_foo)))
26
+ end
27
+
28
+ test "search car with deep through" do
29
+ assert_results(Car.search(:provider_id => providers(:provider_foo)))
30
+ end
31
+
32
+ test "search car with scope" do
33
+ assert_results(Car.search(:import_date => "1990-10-20"))
34
+ end
35
+
36
+ test "search car with enum" do
37
+ assert_results(Car.search(:type_of_car => "family"))
38
+ end
39
+
40
+ test "search car with tags AND" do
41
+ c = cars(:car_foo)
42
+ c.update!(:tag_list => %w(version_1 version_2))
43
+
44
+ assert_results(Car.search(:tags => %w(version_1 version_2)))
45
+ end
46
+
47
+ test "search car with tags OR" do
48
+ c = cars(:car_foo)
49
+ c.update!(:tag_list => %w(version_1 version_2))
50
+
51
+ assert_results(Car.search(:tags => %w(version_1), :tags_combination => :or))
52
+ end
53
+
54
+ test "search car with i18n field" do
55
+ c = cars(:car_foo)
56
+ I18n.available_locales.each do |locale|
57
+ Globalize.with_locale(locale) do
58
+ c.update!(:commercial_name => "Commercial Name #{locale}")
59
+ end
60
+ end
61
+
62
+ Globalize.with_locale(:pt) do
63
+ c.update!(:commercial_name => "Commercial Name foobarish! pt")
64
+ end
65
+
66
+ assert_results(Car.search(:commercial_name => "bar"))
67
+ end
68
+ end
@@ -0,0 +1,7 @@
1
+ require "test_helper"
2
+
3
+ class SearchableModelsTest < ActiveSupport::TestCase
4
+ test "module is correctly included" do
5
+ assert ActiveRecord::Base.ancestors.include?(SearchableModels::Searchable)
6
+ end
7
+ end
@@ -0,0 +1,34 @@
1
+ # Configure Rails Environment
2
+ ENV["RAILS_ENV"] = "test"
3
+ require "pry"
4
+ require "acts-as-taggable-on"
5
+ require "globalize"
6
+ require "simplecov"
7
+ SimpleCov.start "rails"
8
+
9
+ require "minitest/reporters"
10
+ Minitest::Reporters.use!(Minitest::Reporters::DefaultReporter.new)
11
+
12
+ require File.expand_path("../dummy/config/environment.rb", __FILE__)
13
+ require "rails/test_help"
14
+
15
+ Rails.backtrace_cleaner.remove_silencers!
16
+
17
+ # Run any available migration from dummy app
18
+ ActiveRecord::Migrator.migrate(File.expand_path("../dummy/db/migrate/", __FILE__))
19
+
20
+ # Load support files
21
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
22
+
23
+ # Load fixtures from the engine
24
+ if ActiveSupport::TestCase.method_defined?(:fixture_path=)
25
+ ActiveSupport::TestCase.fixture_path = File.expand_path("../fixtures", __FILE__)
26
+ end
27
+
28
+ class ActiveSupport::TestCase
29
+ fixtures :all
30
+
31
+ def assert_results(results)
32
+ assert_equal [cars(:car_foo)], results
33
+ end
34
+ end
metadata ADDED
@@ -0,0 +1,274 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: searchable_models
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - David Fernandez
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-11-14 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 4.1.7
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 4.1.7
27
+ - !ruby/object:Gem::Dependency
28
+ name: sqlite3
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.3'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.3'
41
+ - !ruby/object:Gem::Dependency
42
+ name: pry
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '0.10'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '0.10'
55
+ - !ruby/object:Gem::Dependency
56
+ name: minitest-reporters
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1.0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: simplecov
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '0.8'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '0.8'
83
+ - !ruby/object:Gem::Dependency
84
+ name: acts-as-taggable-on
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '3.3'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '3.3'
97
+ - !ruby/object:Gem::Dependency
98
+ name: globalize
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '4.0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '4.0'
111
+ description: 'SearchableModels provides helpers to facilitate the build of the search
112
+ function on a ActiveRecord model. This search can be done on several fields with
113
+ different configurations: exact match, fuzzy, etc.'
114
+ email:
115
+ - david.fernandez@gatemedia.ch
116
+ executables: []
117
+ extensions: []
118
+ extra_rdoc_files: []
119
+ files:
120
+ - MIT-LICENSE
121
+ - README.md
122
+ - Rakefile
123
+ - lib/searchable_models.rb
124
+ - lib/searchable_models/searchable.rb
125
+ - lib/searchable_models/version.rb
126
+ - lib/tasks/searchable_models_tasks.rake
127
+ - test/dummy/README.rdoc
128
+ - test/dummy/Rakefile
129
+ - test/dummy/app/assets/javascripts/application.js
130
+ - test/dummy/app/assets/stylesheets/application.css
131
+ - test/dummy/app/controllers/application_controller.rb
132
+ - test/dummy/app/helpers/application_helper.rb
133
+ - test/dummy/app/models/car.rb
134
+ - test/dummy/app/models/component.rb
135
+ - test/dummy/app/models/door.rb
136
+ - test/dummy/app/models/group.rb
137
+ - test/dummy/app/models/provider.rb
138
+ - test/dummy/app/views/layouts/application.html.erb
139
+ - test/dummy/bin/bundle
140
+ - test/dummy/bin/rails
141
+ - test/dummy/bin/rake
142
+ - test/dummy/config.ru
143
+ - test/dummy/config/application.rb
144
+ - test/dummy/config/boot.rb
145
+ - test/dummy/config/database.yml
146
+ - test/dummy/config/environment.rb
147
+ - test/dummy/config/environments/development.rb
148
+ - test/dummy/config/environments/production.rb
149
+ - test/dummy/config/environments/test.rb
150
+ - test/dummy/config/initializers/assets.rb
151
+ - test/dummy/config/initializers/backtrace_silencers.rb
152
+ - test/dummy/config/initializers/cookies_serializer.rb
153
+ - test/dummy/config/initializers/filter_parameter_logging.rb
154
+ - test/dummy/config/initializers/inflections.rb
155
+ - test/dummy/config/initializers/mime_types.rb
156
+ - test/dummy/config/initializers/session_store.rb
157
+ - test/dummy/config/initializers/wrap_parameters.rb
158
+ - test/dummy/config/locales/en.yml
159
+ - test/dummy/config/routes.rb
160
+ - test/dummy/config/secrets.yml
161
+ - test/dummy/db/migrate/20141113130904_create_cars.rb
162
+ - test/dummy/db/migrate/20141113142341_create_groups.rb
163
+ - test/dummy/db/migrate/20141113142350_add_group_id_to_cars.rb
164
+ - test/dummy/db/migrate/20141113153040_create_doors.rb
165
+ - test/dummy/db/migrate/20141114120705_create_providers.rb
166
+ - test/dummy/db/migrate/20141114120731_create_components.rb
167
+ - test/dummy/db/migrate/20141114120804_add_component_id_to_doors.rb
168
+ - test/dummy/db/migrate/20141114122828_acts_as_taggable_on_migration.acts_as_taggable_on_engine.rb
169
+ - test/dummy/db/migrate/20141114122829_add_missing_unique_indices.acts_as_taggable_on_engine.rb
170
+ - test/dummy/db/migrate/20141114122830_add_taggings_counter_cache_to_tags.acts_as_taggable_on_engine.rb
171
+ - test/dummy/db/migrate/20141114122831_add_missing_taggable_index.acts_as_taggable_on_engine.rb
172
+ - test/dummy/db/migrate/20141114130703_add_car_translations.rb
173
+ - test/dummy/db/schema.rb
174
+ - test/dummy/db/test.sqlite3
175
+ - test/dummy/log/test.log
176
+ - test/dummy/public/404.html
177
+ - test/dummy/public/422.html
178
+ - test/dummy/public/500.html
179
+ - test/dummy/public/favicon.ico
180
+ - test/dummy/test/fixtures/cars.yml
181
+ - test/dummy/test/fixtures/components.yml
182
+ - test/dummy/test/fixtures/doors.yml
183
+ - test/dummy/test/fixtures/groups.yml
184
+ - test/dummy/test/fixtures/providers.yml
185
+ - test/dummy/test/models/car_test.rb
186
+ - test/searchable_models_test.rb
187
+ - test/test_helper.rb
188
+ homepage: https://github.com/gatemedia/fogged
189
+ licenses:
190
+ - MIT
191
+ metadata: {}
192
+ post_install_message:
193
+ rdoc_options: []
194
+ require_paths:
195
+ - lib
196
+ required_ruby_version: !ruby/object:Gem::Requirement
197
+ requirements:
198
+ - - ">="
199
+ - !ruby/object:Gem::Version
200
+ version: '0'
201
+ required_rubygems_version: !ruby/object:Gem::Requirement
202
+ requirements:
203
+ - - ">="
204
+ - !ruby/object:Gem::Version
205
+ version: '0'
206
+ requirements: []
207
+ rubyforge_project:
208
+ rubygems_version: 2.2.2
209
+ signing_key:
210
+ specification_version: 4
211
+ summary: SearchableModels provides several helpers to build the search function on
212
+ ActiveRecord models
213
+ test_files:
214
+ - test/dummy/app/assets/javascripts/application.js
215
+ - test/dummy/app/assets/stylesheets/application.css
216
+ - test/dummy/app/controllers/application_controller.rb
217
+ - test/dummy/app/helpers/application_helper.rb
218
+ - test/dummy/app/models/car.rb
219
+ - test/dummy/app/models/component.rb
220
+ - test/dummy/app/models/door.rb
221
+ - test/dummy/app/models/group.rb
222
+ - test/dummy/app/models/provider.rb
223
+ - test/dummy/app/views/layouts/application.html.erb
224
+ - test/dummy/bin/bundle
225
+ - test/dummy/bin/rails
226
+ - test/dummy/bin/rake
227
+ - test/dummy/config/application.rb
228
+ - test/dummy/config/boot.rb
229
+ - test/dummy/config/database.yml
230
+ - test/dummy/config/environment.rb
231
+ - test/dummy/config/environments/development.rb
232
+ - test/dummy/config/environments/production.rb
233
+ - test/dummy/config/environments/test.rb
234
+ - test/dummy/config/initializers/assets.rb
235
+ - test/dummy/config/initializers/backtrace_silencers.rb
236
+ - test/dummy/config/initializers/cookies_serializer.rb
237
+ - test/dummy/config/initializers/filter_parameter_logging.rb
238
+ - test/dummy/config/initializers/inflections.rb
239
+ - test/dummy/config/initializers/mime_types.rb
240
+ - test/dummy/config/initializers/session_store.rb
241
+ - test/dummy/config/initializers/wrap_parameters.rb
242
+ - test/dummy/config/locales/en.yml
243
+ - test/dummy/config/routes.rb
244
+ - test/dummy/config/secrets.yml
245
+ - test/dummy/config.ru
246
+ - test/dummy/db/migrate/20141113130904_create_cars.rb
247
+ - test/dummy/db/migrate/20141113142341_create_groups.rb
248
+ - test/dummy/db/migrate/20141113142350_add_group_id_to_cars.rb
249
+ - test/dummy/db/migrate/20141113153040_create_doors.rb
250
+ - test/dummy/db/migrate/20141114120705_create_providers.rb
251
+ - test/dummy/db/migrate/20141114120731_create_components.rb
252
+ - test/dummy/db/migrate/20141114120804_add_component_id_to_doors.rb
253
+ - test/dummy/db/migrate/20141114122828_acts_as_taggable_on_migration.acts_as_taggable_on_engine.rb
254
+ - test/dummy/db/migrate/20141114122829_add_missing_unique_indices.acts_as_taggable_on_engine.rb
255
+ - test/dummy/db/migrate/20141114122830_add_taggings_counter_cache_to_tags.acts_as_taggable_on_engine.rb
256
+ - test/dummy/db/migrate/20141114122831_add_missing_taggable_index.acts_as_taggable_on_engine.rb
257
+ - test/dummy/db/migrate/20141114130703_add_car_translations.rb
258
+ - test/dummy/db/schema.rb
259
+ - test/dummy/db/test.sqlite3
260
+ - test/dummy/log/test.log
261
+ - test/dummy/public/404.html
262
+ - test/dummy/public/422.html
263
+ - test/dummy/public/500.html
264
+ - test/dummy/public/favicon.ico
265
+ - test/dummy/Rakefile
266
+ - test/dummy/README.rdoc
267
+ - test/dummy/test/fixtures/cars.yml
268
+ - test/dummy/test/fixtures/components.yml
269
+ - test/dummy/test/fixtures/doors.yml
270
+ - test/dummy/test/fixtures/groups.yml
271
+ - test/dummy/test/fixtures/providers.yml
272
+ - test/dummy/test/models/car_test.rb
273
+ - test/searchable_models_test.rb
274
+ - test/test_helper.rb