ssickles-tire 0.4.2 → 0.4.2.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (59) hide show
  1. data/lib/tire.rb +3 -18
  2. data/lib/tire/alias.rb +35 -11
  3. data/lib/tire/index.rb +76 -34
  4. data/lib/tire/results/collection.rb +13 -38
  5. data/lib/tire/results/item.rb +0 -19
  6. data/lib/tire/rubyext/to_json.rb +21 -0
  7. data/lib/tire/search.rb +8 -7
  8. data/lib/tire/search/scan.rb +8 -8
  9. data/lib/tire/search/sort.rb +1 -1
  10. data/lib/tire/version.rb +38 -7
  11. data/test/integration/reindex_test.rb +2 -2
  12. data/test/integration/scan_test.rb +1 -1
  13. data/test/test_helper.rb +3 -27
  14. data/test/unit/index_alias_test.rb +17 -3
  15. data/test/unit/index_test.rb +18 -30
  16. data/test/unit/results_collection_test.rb +0 -60
  17. data/test/unit/results_item_test.rb +0 -37
  18. data/test/unit/rubyext_test.rb +3 -3
  19. data/test/unit/search_test.rb +6 -1
  20. data/test/unit/tire_test.rb +0 -15
  21. data/tire.gemspec +13 -30
  22. metadata +41 -153
  23. data/lib/tire/model/callbacks.rb +0 -40
  24. data/lib/tire/model/import.rb +0 -26
  25. data/lib/tire/model/indexing.rb +0 -128
  26. data/lib/tire/model/naming.rb +0 -100
  27. data/lib/tire/model/percolate.rb +0 -99
  28. data/lib/tire/model/persistence.rb +0 -72
  29. data/lib/tire/model/persistence/attributes.rb +0 -143
  30. data/lib/tire/model/persistence/finders.rb +0 -66
  31. data/lib/tire/model/persistence/storage.rb +0 -71
  32. data/lib/tire/model/search.rb +0 -305
  33. data/lib/tire/rubyext/hash.rb +0 -8
  34. data/lib/tire/rubyext/ruby_1_8.rb +0 -54
  35. data/lib/tire/rubyext/symbol.rb +0 -11
  36. data/lib/tire/utils.rb +0 -17
  37. data/test/integration/active_model_indexing_test.rb +0 -51
  38. data/test/integration/active_model_searchable_test.rb +0 -114
  39. data/test/integration/active_record_searchable_test.rb +0 -446
  40. data/test/integration/mongoid_searchable_test.rb +0 -309
  41. data/test/integration/persistent_model_test.rb +0 -117
  42. data/test/models/active_model_article.rb +0 -31
  43. data/test/models/active_model_article_with_callbacks.rb +0 -49
  44. data/test/models/active_model_article_with_custom_document_type.rb +0 -7
  45. data/test/models/active_model_article_with_custom_index_name.rb +0 -7
  46. data/test/models/active_record_models.rb +0 -122
  47. data/test/models/mongoid_models.rb +0 -97
  48. data/test/models/persistent_article.rb +0 -11
  49. data/test/models/persistent_article_in_namespace.rb +0 -12
  50. data/test/models/persistent_article_with_casting.rb +0 -28
  51. data/test/models/persistent_article_with_defaults.rb +0 -11
  52. data/test/models/persistent_articles_with_custom_index_name.rb +0 -10
  53. data/test/models/supermodel_article.rb +0 -17
  54. data/test/models/validated_model.rb +0 -11
  55. data/test/unit/active_model_lint_test.rb +0 -17
  56. data/test/unit/model_callbacks_test.rb +0 -116
  57. data/test/unit/model_import_test.rb +0 -71
  58. data/test/unit/model_persistence_test.rb +0 -516
  59. data/test/unit/model_search_test.rb +0 -899
@@ -1,309 +0,0 @@
1
- require 'test_helper'
2
- require File.expand_path('../../models/mongoid_models', __FILE__)
3
-
4
- begin
5
- require "mongo"
6
- Mongo::Connection.new("localhost", 27017)
7
-
8
- ENV["MONGODB_IS_AVAILABLE"] = 'true'
9
- rescue Mongo::ConnectionFailure => e
10
- ENV["MONGODB_IS_AVAILABLE"] = nil
11
- end
12
-
13
- if ENV["MONGODB_IS_AVAILABLE"]
14
- module Tire
15
-
16
- class MongoidSearchableIntegrationTest < Test::Unit::TestCase
17
- include Test::Integration
18
-
19
- def setup
20
- super
21
- Mongoid.configure do |config|
22
- config.master = Mongo::Connection.new.db("tire_mongoid_integration_test")
23
- end
24
- end
25
-
26
- context "Mongoid integration" do
27
-
28
- setup do
29
- MongoidArticle.destroy_all
30
- Tire.index('mongoid_articles').delete
31
-
32
- load File.expand_path('../../models/mongoid_models.rb', __FILE__)
33
- end
34
- teardown do
35
- MongoidArticle.destroy_all
36
- Tire.index('mongoid_articles').delete
37
- end
38
-
39
- should "configure mapping" do
40
- assert_equal 'snowball', MongoidArticle.mapping[:title][:analyzer]
41
- assert_equal 10, MongoidArticle.mapping[:title][:boost]
42
-
43
- assert_equal 'snowball', MongoidArticle.tire.index.mapping['mongoid_article']['properties']['title']['analyzer']
44
- end
45
-
46
- should "save document into index on save and find it" do
47
- a = MongoidArticle.new :title => 'Test'
48
- a.save!
49
- id = a.id
50
-
51
- a.index.refresh
52
-
53
- results = MongoidArticle.tire.search 'test'
54
-
55
- assert results.any?
56
- assert_equal 1, results.count
57
-
58
- assert_instance_of Results::Item, results.first
59
- assert_not_nil results.first.id
60
- assert_equal id.to_s, results.first.id.to_s
61
- assert results.first.persisted?, "Record should be persisted"
62
- assert_not_nil results.first._score
63
- assert_equal 'Test', results.first.title
64
- end
65
-
66
- context "with eager loading" do
67
- setup do
68
- MongoidArticle.destroy_all
69
-
70
- @first_article = MongoidArticle.create! :title => "Test 1"
71
- @second_article = MongoidArticle.create! :title => "Test 2"
72
- @third_article = MongoidArticle.create! :title => "Test 3"
73
- @fourth_article = MongoidArticle.create! :title => "Test 4"
74
- @fifth_article = MongoidArticle.create! :title => "Test 5"
75
-
76
- MongoidArticle.tire.index.refresh
77
- end
78
-
79
- should "load records on query search" do
80
- results = MongoidArticle.tire.search '"Test 1"', :load => true
81
-
82
- assert results.any?
83
- assert_equal MongoidArticle.all.first, results.first
84
- end
85
-
86
- should "load records on block search" do
87
- results = MongoidArticle.tire.search :load => true do
88
- query { string '"Test 1"' }
89
- end
90
-
91
- assert_equal MongoidArticle.all.first, results.first
92
- end
93
-
94
- should "load records with options on query search" do
95
- assert_equal MongoidArticle.find([@first_article[:_id]], :include => 'comments').first,
96
- MongoidArticle.tire.search('"Test 1"',
97
- :load => { :include => 'comments' }).results.first
98
- end
99
-
100
- should "return empty collection for nonmatching query" do
101
- assert_nothing_raised do
102
- results = MongoidArticle.tire.search :load => true do
103
- query { string '"Hic Sunt Leones"' }
104
- end
105
- assert_equal 0, results.size
106
- assert !results.any?
107
- end
108
- end
109
- end
110
-
111
- should "remove document from index on destroy" do
112
- a = MongoidArticle.new :title => 'Test remove...'
113
- a.save!
114
- assert_equal 1, MongoidArticle.count
115
-
116
- a.destroy
117
- assert_equal 0, MongoidArticle.all.size
118
-
119
- a.index.refresh
120
- results = MongoidArticle.tire.search 'test'
121
- assert_equal 0, results.count
122
- end
123
-
124
- should "return documents with scores" do
125
- MongoidArticle.create! :title => 'foo'
126
- MongoidArticle.create! :title => 'bar'
127
-
128
- MongoidArticle.tire.index.refresh
129
- results = MongoidArticle.tire.search 'foo OR bar^100'
130
- assert_equal 2, results.count
131
-
132
- assert_equal 'bar', results.first.title
133
- end
134
-
135
- context "with pagination" do
136
- setup do
137
- 1.upto(9) { |number| MongoidArticle.create :title => "Test#{number}" }
138
- MongoidArticle.tire.index.refresh
139
- end
140
-
141
- context "and parameter searches" do
142
-
143
- should "find first page with five results" do
144
- results = MongoidArticle.tire.search 'test*', :sort => 'title', :per_page => 5, :page => 1
145
- assert_equal 5, results.size
146
-
147
- assert_equal 2, results.total_pages
148
- assert_equal 1, results.current_page
149
- assert_equal nil, results.previous_page
150
- assert_equal 2, results.next_page
151
-
152
- assert_equal 'Test1', results.first.title
153
- end
154
-
155
- should "find next page with five results" do
156
- results = MongoidArticle.tire.search 'test*', :sort => 'title', :per_page => 5, :page => 2
157
- assert_equal 4, results.size
158
-
159
- assert_equal 2, results.total_pages
160
- assert_equal 2, results.current_page
161
- assert_equal 1, results.previous_page
162
- assert_equal nil, results.next_page
163
-
164
- assert_equal 'Test6', results.first.title
165
- end
166
-
167
- should "find not find missing page" do
168
- results = MongoidArticle.tire.search 'test*', :sort => 'title', :per_page => 5, :page => 3
169
- assert_equal 0, results.size
170
-
171
- assert_equal 2, results.total_pages
172
- assert_equal 3, results.current_page
173
- assert_equal 2, results.previous_page
174
- assert_equal nil, results.next_page
175
-
176
- assert_nil results.first
177
- end
178
-
179
- end
180
-
181
- context "and block searches" do
182
- setup { @q = 'test*' }
183
-
184
- should "find first page with five results" do
185
- results = MongoidArticle.tire.search do |search|
186
- search.query { |query| query.string @q }
187
- search.sort { by :title }
188
- search.from 0
189
- search.size 5
190
- end
191
- assert_equal 5, results.size
192
-
193
- assert_equal 2, results.total_pages
194
- assert_equal 1, results.current_page
195
- assert_equal nil, results.previous_page
196
- assert_equal 2, results.next_page
197
-
198
- assert_equal 'Test1', results.first.title
199
- end
200
-
201
- should "find next page with five results" do
202
- results = MongoidArticle.tire.search do |search|
203
- search.query { |query| query.string @q }
204
- search.sort { by :title }
205
- search.from 5
206
- search.size 5
207
- end
208
- assert_equal 4, results.size
209
-
210
- assert_equal 2, results.total_pages
211
- assert_equal 2, results.current_page
212
- assert_equal 1, results.previous_page
213
- assert_equal nil, results.next_page
214
-
215
- assert_equal 'Test6', results.first.title
216
- end
217
-
218
- should "not find a missing page" do
219
- results = MongoidArticle.tire.search do |search|
220
- search.query { |query| query.string @q }
221
- search.sort { by :title }
222
- search.from 10
223
- search.size 5
224
- end
225
- assert_equal 0, results.size
226
-
227
- assert_equal 2, results.total_pages
228
- assert_equal 3, results.current_page
229
- assert_equal 2, results.previous_page
230
- assert_equal nil, results.next_page
231
-
232
- assert_nil results.first
233
- end
234
-
235
- end
236
-
237
- end
238
-
239
- context "with proxy" do
240
-
241
- should "allow access to Tire instance methods" do
242
- a = MongoidClassWithTireMethods.create :title => 'One'
243
- assert_equal "THIS IS MY INDEX!", a.index
244
- assert_instance_of Tire::Index, a.tire.index
245
- assert a.tire.index.exists?, "Index should exist"
246
- end
247
-
248
- should "allow access to Tire class methods" do
249
- class ::MongoidClassWithTireMethods
250
- include Mongoid::Document
251
- def self.search(*)
252
- "THIS IS MY SEARCH!"
253
- end
254
- end
255
-
256
- MongoidClassWithTireMethods.create :title => 'One'
257
- MongoidClassWithTireMethods.tire.index.refresh
258
-
259
- assert_equal "THIS IS MY SEARCH!", MongoidClassWithTireMethods.search
260
-
261
- results = MongoidClassWithTireMethods.tire.search 'one'
262
-
263
- assert_equal 'One', results.first.title
264
- end
265
-
266
- end
267
-
268
- context "within Rails" do
269
-
270
- setup do
271
- module ::Rails; end
272
-
273
- a = MongoidArticle.new :title => 'Test'
274
- c = a.comments.build :author => 'fool', :body => 'Works!'
275
- s = a.stats.build :pageviews => 12, :period => '2011-08'
276
- a.save!
277
- c.save!
278
- s.save!
279
- @id = a.id.to_s
280
-
281
- a.index.refresh
282
- @item = MongoidArticle.tire.search('test').first
283
- end
284
-
285
- should "have access to indexed properties" do
286
- assert_equal 'Test', @item.title
287
- assert_equal 'fool', @item.comments.first.author
288
- assert_equal 12, @item.stats.first.pageviews
289
- end
290
-
291
- should "load the underlying models" do
292
- assert_instance_of Results::Item, @item
293
- assert_instance_of MongoidArticle, @item.load
294
- assert_equal 'Test', @item.load.title
295
-
296
- assert_instance_of Results::Item, @item.comments.first
297
- assert_instance_of MongoidComment, @item.comments.first.load
298
- assert_equal 'fool', @item.comments.first.load.author
299
- end
300
-
301
- should "load the underlying model with options" do
302
- assert_equal MongoidArticle.find(@id), @item.load(:include => 'comments')
303
- end
304
-
305
- end
306
- end
307
- end
308
- end
309
- end
@@ -1,117 +0,0 @@
1
- require 'test_helper'
2
-
3
- module Tire
4
-
5
- class PersistentModelIntegrationTest < Test::Unit::TestCase
6
- include Test::Integration
7
-
8
- def setup
9
- super
10
- PersistentArticle.index.delete
11
- end
12
-
13
- def teardown
14
- super
15
- PersistentArticle.index.delete
16
- PersistentArticleWithDefaults.index.delete
17
- end
18
-
19
- context "PersistentModel" do
20
- should "search with simple query" do
21
- PersistentArticle.create :id => 1, :title => 'One'
22
- PersistentArticle.index.refresh
23
-
24
- results = PersistentArticle.search 'one'
25
- assert_equal 'One', results.first.title
26
- end
27
-
28
- should "search with a block" do
29
- PersistentArticle.create :id => 1, :title => 'One'
30
- PersistentArticle.index.refresh
31
-
32
- results = PersistentArticle.search(:sort => 'title') { query { string 'one' } }
33
- assert_equal 'One', results.first.title
34
- end
35
-
36
- should "return instances of model" do
37
- PersistentArticle.create :id => 1, :title => 'One'
38
- PersistentArticle.index.refresh
39
-
40
- results = PersistentArticle.search 'one'
41
- assert_instance_of PersistentArticle, results.first
42
- end
43
-
44
- should "save documents into index and find them by IDs" do
45
- one = PersistentArticle.create :id => 1, :title => 'One'
46
- two = PersistentArticle.create :id => 2, :title => 'Two'
47
-
48
- PersistentArticle.index.refresh
49
-
50
- results = PersistentArticle.find [1, 2]
51
-
52
- assert_equal 2, results.size
53
-
54
- end
55
-
56
- should "return default values for properties without value" do
57
- PersistentArticleWithDefaults.create :id => 1, :title => 'One'
58
- PersistentArticleWithDefaults.index.refresh
59
-
60
- results = PersistentArticleWithDefaults.all
61
-
62
- assert_equal [], results.first.tags
63
- end
64
-
65
- context "with pagination" do
66
-
67
- setup do
68
- 1.upto(9) { |number| PersistentArticle.create :title => "Test#{number}" }
69
- PersistentArticle.index.refresh
70
- end
71
-
72
- should "find first page with five results" do
73
- results = PersistentArticle.search( :per_page => 5, :page => 1 ) { query { all } }
74
- assert_equal 5, results.size
75
-
76
- # WillPaginate
77
- #
78
- assert_equal 2, results.total_pages
79
- assert_equal 1, results.current_page
80
- assert_equal nil, results.previous_page
81
- assert_equal 2, results.next_page
82
-
83
- # Kaminari
84
- #
85
- assert_equal 5, results.limit_value
86
- assert_equal 9, results.total_count
87
- assert_equal 2, results.num_pages
88
- assert_equal 0, results.offset_value
89
- end
90
-
91
- end
92
-
93
- context "with namespaced models" do
94
- setup do
95
- MyNamespace::PersistentArticleInNamespace.create :title => 'Test'
96
- MyNamespace::PersistentArticleInNamespace.index.refresh
97
- end
98
-
99
- teardown do
100
- MyNamespace::PersistentArticleInNamespace.index.delete
101
- end
102
-
103
- should "find the document in the index" do
104
- results = MyNamespace::PersistentArticleInNamespace.search 'test'
105
-
106
- assert results.any?, "No results returned: #{results.inspect}"
107
- assert_equal 1, results.count
108
-
109
- assert_instance_of MyNamespace::PersistentArticleInNamespace, results.first
110
- end
111
-
112
- end
113
-
114
- end
115
-
116
- end
117
- end
@@ -1,31 +0,0 @@
1
- # Example ActiveModel class
2
-
3
- require 'rubygems'
4
- require 'active_model'
5
-
6
- class ActiveModelArticle
7
-
8
- extend ActiveModel::Naming
9
- include ActiveModel::AttributeMethods
10
- include ActiveModel::Serialization
11
- include ActiveModel::Serializers::JSON
12
-
13
- include Tire::Model::Search
14
-
15
- attr_reader :attributes
16
-
17
- def initialize(attributes = {})
18
- @attributes = attributes
19
- end
20
-
21
- def id; attributes['id'] || attributes['_id']; end
22
- def id=(value); attributes['id'] = value; end
23
-
24
- def method_missing(name, *args, &block)
25
- attributes[name.to_sym] || attributes[name.to_s] || super
26
- end
27
-
28
- def persisted?; true; end
29
- def save; true; end
30
-
31
- end