supernova 0.6.7 → 0.6.8
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +4 -5
- data/Gemfile.lock +30 -29
- data/VERSION +1 -1
- data/lib/supernova.rb +2 -1
- data/lib/supernova/criteria.rb +68 -28
- data/lib/supernova/solr.rb +41 -2
- data/lib/supernova/solr_criteria.rb +27 -13
- data/lib/supernova/solr_indexer.rb +7 -4
- data/spec/integration/solr_spec.rb +27 -12
- data/spec/spec_helper.rb +1 -0
- data/spec/supernova/criteria_spec.rb +158 -10
- data/spec/supernova/solr_criteria_spec.rb +77 -20
- data/spec/supernova/solr_indexer_spec.rb +21 -7
- data/spec/supernova/solr_spec.rb +13 -26
- data/spec/supernova_spec.rb +2 -2
- data/supernova.gemspec +20 -24
- metadata +144 -233
@@ -1,24 +1,25 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
1
2
|
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
3
|
|
3
4
|
describe "Solr" do
|
4
5
|
before(:each) do
|
5
6
|
Supernova::Solr.instance_variable_set("@connection", nil)
|
6
|
-
Supernova::Solr.url = "http://localhost:
|
7
|
+
Supernova::Solr.url = "http://localhost:8983/solr/supernova_test"
|
7
8
|
Supernova::Solr.truncate!
|
8
9
|
Offer.criteria_class = Supernova::SolrCriteria
|
9
10
|
root = Geokit::LatLng.new(47, 11)
|
10
11
|
# endpoint = root.endpoint(90, 50, :units => :kms)
|
11
12
|
e_lat = 46.9981112912042
|
12
13
|
e_lng = 11.6587158814378
|
13
|
-
Supernova::Solr.
|
14
|
+
Supernova::Solr.add(:id => "offers/1", :type => "Offer", :user_id_i => 1, :enabled_b => false,
|
14
15
|
:text_t => "Hans Meyer", :popularity_i => 10,
|
15
16
|
:location_p => "#{root.lat},#{root.lng}", :type => "Offer"
|
16
17
|
)
|
17
|
-
Supernova::Solr.
|
18
|
+
Supernova::Solr.add(:id => "offers/2", :user_id_i => 2, :enabled_b => true, :text_t => "Marek Mintal",
|
18
19
|
:popularity_i => 1,
|
19
20
|
:location_p => "#{e_lat},#{e_lng}", :type => "Offer"
|
20
21
|
)
|
21
|
-
Supernova::Solr.
|
22
|
+
Supernova::Solr.commit!
|
22
23
|
end
|
23
24
|
|
24
25
|
after(:each) do
|
@@ -40,7 +41,7 @@ describe "Solr" do
|
|
40
41
|
{ :title_s => "Title2", :id => 2, :type => "Record" }
|
41
42
|
]
|
42
43
|
)
|
43
|
-
response = Supernova::Solr.
|
44
|
+
response = JSON.parse(Typhoeus::Request.post(Supernova::Solr.select_url, :params => { :q=>'*:*', :start=>0, :rows=>10, :sort => "id asc", :wt => "json" }).body)
|
44
45
|
response["response"]["docs"].first.should == { "title_s" => "Title1", "id" => "1", "type" => "Record" }
|
45
46
|
response["response"]["docs"].at(1).should == { "title_s" => "Title2", "id" => "2", "type" => "Record" }
|
46
47
|
end
|
@@ -49,7 +50,7 @@ describe "Solr" do
|
|
49
50
|
describe "#indexing" do
|
50
51
|
before(:each) do
|
51
52
|
Supernova::Solr.truncate!
|
52
|
-
Supernova::Solr.
|
53
|
+
Supernova::Solr.commit!
|
53
54
|
end
|
54
55
|
|
55
56
|
class OfferIndex < Supernova::SolrIndexer
|
@@ -182,10 +183,10 @@ describe "Solr" do
|
|
182
183
|
|
183
184
|
describe "not searches" do
|
184
185
|
it "finds the correct documents for not nil" do
|
185
|
-
Supernova::Solr.
|
186
|
+
Supernova::Solr.add(:id => "offers/3", :enabled_b => true, :text_t => "Marek Mintal", :popularity_i => 1,
|
186
187
|
:type => "Offer"
|
187
188
|
)
|
188
|
-
Supernova::Solr.
|
189
|
+
Supernova::Solr.commit!
|
189
190
|
raise "There should be 3 docs" if new_criteria.total_entries != 3
|
190
191
|
new_criteria.with(:user_id_i.not => nil).map { |h| h["id"] }.should == [1, 2]
|
191
192
|
end
|
@@ -261,11 +262,25 @@ describe "Solr" do
|
|
261
262
|
describe "#facets" do
|
262
263
|
it "returns the correct facets hash" do
|
263
264
|
# pending "fix me"
|
264
|
-
Supernova::Solr.
|
265
|
+
Supernova::Solr.add(:id => "offers/3", :type => "Offer", :user_id_i => 3, :enabled_b => false,
|
265
266
|
:text_t => "Hans Müller", :popularity_i => 10, :type => "Offer"
|
266
267
|
)
|
267
|
-
Supernova::Solr.
|
268
|
-
new_criteria.facet_fields(:text_t).execute.facets.should == {"text_t"=>{"mintal"=>1, "marek"=>1, "meyer"=>1, "
|
268
|
+
Supernova::Solr.commit!
|
269
|
+
new_criteria.facet_fields(:text_t).execute.facets.should == {"text_t"=>{"mintal"=>1, "marek"=>1, "meyer"=>1, "müller"=>1, "han"=>2}}
|
270
|
+
end
|
271
|
+
end
|
272
|
+
|
273
|
+
describe "#execute_raw" do
|
274
|
+
it "returns a hash" do
|
275
|
+
new_criteria.execute_raw.should be_kind_of(Hash)
|
276
|
+
end
|
277
|
+
|
278
|
+
it "should not be empty" do
|
279
|
+
new_criteria.execute_raw.keys.should_not be_empty
|
280
|
+
end
|
281
|
+
|
282
|
+
it "includes th ecorrect headers" do
|
283
|
+
new_criteria.execute_raw.keys.sort.should == %w(responseHeader response).sort
|
269
284
|
end
|
270
285
|
end
|
271
286
|
|
@@ -310,7 +325,7 @@ describe "Solr" do
|
|
310
325
|
row3 = { "id" => 3, "location" => "Berlin", "type" => "Offer" }
|
311
326
|
row4 = { "id" => 4, "location" => "München", "type" => "Offer" }
|
312
327
|
Supernova::Solr.truncate!
|
313
|
-
Supernova::Solr.
|
328
|
+
Supernova::Solr.commit!
|
314
329
|
@clazz.new.index_rows([row1, row2, row3, row4])
|
315
330
|
end
|
316
331
|
|
data/spec/spec_helper.rb
CHANGED
@@ -15,6 +15,18 @@ describe "Supernova::Criteria" do
|
|
15
15
|
it "sets the clazz_name" do
|
16
16
|
Supernova::Criteria.new(Offer).clazz.should == Offer
|
17
17
|
end
|
18
|
+
|
19
|
+
it "allows setting immutable!" do
|
20
|
+
a = Supernova::Criteria.new
|
21
|
+
a.immutable!
|
22
|
+
a.should be_immutable
|
23
|
+
end
|
24
|
+
|
25
|
+
it "automatically sets the criteria to immutable when globally enabled" do
|
26
|
+
Supernova::Criteria.immutable_by_default!
|
27
|
+
a = Supernova::Criteria.new
|
28
|
+
a.should be_immutable
|
29
|
+
end
|
18
30
|
end
|
19
31
|
|
20
32
|
[
|
@@ -52,7 +64,7 @@ describe "Supernova::Criteria" do
|
|
52
64
|
|
53
65
|
describe "#order" do
|
54
66
|
it "sets the order statement" do
|
55
|
-
scope.order("popularity desc").search_options[:order].should == "popularity desc"
|
67
|
+
scope.order("popularity desc").search_options[:order].should == ["popularity desc"]
|
56
68
|
end
|
57
69
|
end
|
58
70
|
|
@@ -147,6 +159,7 @@ describe "Supernova::Criteria" do
|
|
147
159
|
|
148
160
|
it "returns the results" do
|
149
161
|
res = double("results")
|
162
|
+
scope.stub!(:populate)
|
150
163
|
scope.instance_variable_set("@results", res)
|
151
164
|
scope.to_a.should == res
|
152
165
|
end
|
@@ -230,6 +243,130 @@ describe "Supernova::Criteria" do
|
|
230
243
|
end
|
231
244
|
end
|
232
245
|
|
246
|
+
describe "#clone" do
|
247
|
+
it "returns a new Supernova::Criteria" do
|
248
|
+
Supernova::Criteria.new.clone.should be_kind_of(Supernova::Criteria)
|
249
|
+
end
|
250
|
+
|
251
|
+
it "also clones the attributes" do
|
252
|
+
a = Supernova::Criteria.new
|
253
|
+
b = a.clone
|
254
|
+
b.immutable?.should == false
|
255
|
+
a.search_options[:a] = 1
|
256
|
+
b.search_options[:a].should be_nil
|
257
|
+
end
|
258
|
+
|
259
|
+
it "makes the cloned collection immutable" do
|
260
|
+
a = Supernova::Criteria.new
|
261
|
+
a.immutable!
|
262
|
+
b = a.clone
|
263
|
+
b.immutable?.should == true
|
264
|
+
end
|
265
|
+
end
|
266
|
+
|
267
|
+
describe "#self_or_clone" do
|
268
|
+
it "returns self when immutable is off" do
|
269
|
+
a = Supernova::Criteria.new
|
270
|
+
a.self_or_clone.should == a
|
271
|
+
end
|
272
|
+
|
273
|
+
it "returns a clone when immutable is on" do
|
274
|
+
a = Supernova::Criteria.new
|
275
|
+
a.immutable!
|
276
|
+
b = a.self_or_clone
|
277
|
+
b.should be_kind_of(Supernova::Criteria)
|
278
|
+
b.should_not == a
|
279
|
+
end
|
280
|
+
end
|
281
|
+
|
282
|
+
describe "#merge_filters_array" do
|
283
|
+
describe "when mutable" do
|
284
|
+
it "returns self" do
|
285
|
+
a = Supernova::Criteria.new
|
286
|
+
a.merge_filters_array(:a, [1, 2, 3]).should == a
|
287
|
+
a.search_options[:a].should == [1, 2, 3]
|
288
|
+
end
|
289
|
+
end
|
290
|
+
|
291
|
+
describe "when immutable" do
|
292
|
+
it "returns self" do
|
293
|
+
a = Supernova::Criteria.new
|
294
|
+
a.immutable!
|
295
|
+
b = a.merge_filters_array(:a, [1, 2, 3])
|
296
|
+
b.should_not == a
|
297
|
+
a.search_options[:a].should be_nil
|
298
|
+
b.search_options[:a].should == [1, 2, 3]
|
299
|
+
end
|
300
|
+
end
|
301
|
+
end
|
302
|
+
|
303
|
+
describe "#without" do
|
304
|
+
describe "when mutable" do
|
305
|
+
it "returns self" do
|
306
|
+
a = Supernova::Criteria.new
|
307
|
+
a.without(:a => 1).should == a
|
308
|
+
a.filters[:without].should == { :a => [1] }
|
309
|
+
end
|
310
|
+
end
|
311
|
+
|
312
|
+
describe "when immutable" do
|
313
|
+
it "returns self" do
|
314
|
+
a = Supernova::Criteria.new
|
315
|
+
a.immutable!
|
316
|
+
b = a.without(:a => 2)
|
317
|
+
b.should_not == a
|
318
|
+
a.filters[:without].should be_nil
|
319
|
+
b.filters[:without].should == { :a => [2] }
|
320
|
+
end
|
321
|
+
end
|
322
|
+
end
|
323
|
+
|
324
|
+
|
325
|
+
describe "#merge_filters_or_search_options" do
|
326
|
+
describe "when mutable" do
|
327
|
+
it "returns self" do
|
328
|
+
a = Supernova::Criteria.new
|
329
|
+
a.merge_filters_or_search_options(:search_options, :per_page, 1).should == a
|
330
|
+
a.search_options[:per_page].should == 1
|
331
|
+
end
|
332
|
+
end
|
333
|
+
|
334
|
+
describe "when immutable" do
|
335
|
+
it "returns a new criteria" do
|
336
|
+
a = Supernova::Criteria.new
|
337
|
+
a.immutable!
|
338
|
+
b = a.merge_filters_or_search_options(:search_options, :per_page, 3)
|
339
|
+
a.search_options[:per_page].should be_nil
|
340
|
+
b.search_options[:per_page].should == 3
|
341
|
+
end
|
342
|
+
end
|
343
|
+
end
|
344
|
+
|
345
|
+
describe "#except" do
|
346
|
+
describe "being mutable" do
|
347
|
+
it "returns the criteria" do
|
348
|
+
a = Supernova::Criteria.new
|
349
|
+
a.except(:order).should be_kind_of(Supernova::Criteria)
|
350
|
+
end
|
351
|
+
|
352
|
+
it "removes the specified field" do
|
353
|
+
a = Supernova::Criteria.new
|
354
|
+
a.order("id").except(:order).search_options[:order].should be_nil
|
355
|
+
end
|
356
|
+
end
|
357
|
+
|
358
|
+
describe "being immutable" do
|
359
|
+
it "returns a different criteria with the field removed" do
|
360
|
+
a = Supernova::Criteria.new.order("id").where(:a => 1)
|
361
|
+
a.immutable!
|
362
|
+
b = a.except(:order)
|
363
|
+
b.search_options[:order].should be_nil
|
364
|
+
b.filters[:with].should == { :a => 1 }
|
365
|
+
a.search_options[:order].should == ["id"]
|
366
|
+
end
|
367
|
+
end
|
368
|
+
end
|
369
|
+
|
233
370
|
describe "#method_missing" do
|
234
371
|
it "raises a no method error when methd not defined" do
|
235
372
|
lambda {
|
@@ -240,7 +377,7 @@ describe "Supernova::Criteria" do
|
|
240
377
|
it "forwards all array methods to @results" do
|
241
378
|
results = double("results")
|
242
379
|
scope.instance_variable_set("@results", results)
|
243
|
-
results.should_receive(:index
|
380
|
+
results.should_receive(:index).with("1")
|
244
381
|
scope.index("1")
|
245
382
|
end
|
246
383
|
|
@@ -292,10 +429,6 @@ describe "Supernova::Criteria" do
|
|
292
429
|
new_crit.merge(criteria).should == new_crit
|
293
430
|
end
|
294
431
|
|
295
|
-
it "merges e.g. the order" do
|
296
|
-
new_crit.merge(criteria).search_options[:order].should == "popularity asc"
|
297
|
-
end
|
298
|
-
|
299
432
|
it "merges e.g. the with filters" do
|
300
433
|
new_crit.merge(criteria).filters[:with].should == { :c => 8, :a => 1 }
|
301
434
|
end
|
@@ -333,18 +466,33 @@ describe "Supernova::Criteria" do
|
|
333
466
|
it "calls merge on options" do
|
334
467
|
criteria.stub!(:search_options).and_return({ :x => 2, :y => 9 })
|
335
468
|
new_crit.stub!(:search_options).and_return({ :z => 3, :c => 1 })
|
336
|
-
new_crit.should_receive(:merge_search_options).with(:x, 2)
|
337
|
-
new_crit.should_receive(:merge_search_options).with(:y, 9)
|
469
|
+
new_crit.should_receive(:merge_search_options).with(:x, 2).and_return(new_crit)
|
470
|
+
new_crit.should_receive(:merge_search_options).with(:y, 9).and_return(new_crit)
|
338
471
|
new_crit.merge(criteria)
|
339
472
|
end
|
340
473
|
|
341
474
|
it "calls merge filters on all filters" do
|
342
475
|
criteria.stub!(:filters).and_return({ :a => 1, :c => 3 })
|
343
476
|
new_crit.stub!(:filters).and_return({ :b => 2, :e => 1 })
|
344
|
-
new_crit.should_receive(:merge_filters).with(:a, 1)
|
345
|
-
new_crit.should_receive(:merge_filters).with(:c, 3)
|
477
|
+
new_crit.should_receive(:merge_filters).with(:a, 1).and_return(new_crit)
|
478
|
+
new_crit.should_receive(:merge_filters).with(:c, 3).and_return(new_crit)
|
346
479
|
new_crit.merge(criteria)
|
347
480
|
end
|
481
|
+
|
482
|
+
describe "when immutable" do
|
483
|
+
it "merges two filters but does not break " do
|
484
|
+
a = Supernova::Criteria.new.with(:a => 1)
|
485
|
+
a.immutable!
|
486
|
+
b = Supernova::Criteria.new.with(:b => 2)
|
487
|
+
b.immutable!
|
488
|
+
c = a.merge(b)
|
489
|
+
c.should_not == a
|
490
|
+
c.should_not == b
|
491
|
+
a.filters[:with].should == { :a => 1 }
|
492
|
+
b.filters[:with].should == { :b => 2 }
|
493
|
+
c.filters[:with].should == { :a => 1, :b => 2 }
|
494
|
+
end
|
495
|
+
end
|
348
496
|
end
|
349
497
|
|
350
498
|
describe "#near" do
|
@@ -3,7 +3,6 @@ require "ostruct"
|
|
3
3
|
|
4
4
|
describe Supernova::SolrCriteria do
|
5
5
|
let(:criteria) { Supernova::SolrCriteria.new }
|
6
|
-
let(:rsolr) { double("rsolr").as_null_object }
|
7
6
|
let(:docs) do
|
8
7
|
[
|
9
8
|
{"popularity"=>10, "location"=>"47,11", "text"=>"Hans Meyer", "id"=>"offers/1", "enabled"=>false, "user_id"=>1, "type"=>"Offer"},
|
@@ -16,10 +15,6 @@ describe Supernova::SolrCriteria do
|
|
16
15
|
}
|
17
16
|
end
|
18
17
|
|
19
|
-
before(:each) do
|
20
|
-
Supernova::Solr.stub!(:connection).and_return rsolr
|
21
|
-
end
|
22
|
-
|
23
18
|
describe "#fq_from_with" do
|
24
19
|
it "returns the correct filter for with ranges" do
|
25
20
|
criteria.fq_from_with(:user_id => Range.new(10, 12)).should == ["user_id:[10 TO 12]"]
|
@@ -63,6 +58,16 @@ describe Supernova::SolrCriteria do
|
|
63
58
|
end
|
64
59
|
end
|
65
60
|
|
61
|
+
describe "#convert_search_order" do
|
62
|
+
it "returns a string" do
|
63
|
+
criteria.convert_search_order("title asc").should == "title asc"
|
64
|
+
end
|
65
|
+
|
66
|
+
it "returns a complex string" do
|
67
|
+
criteria.convert_search_order("title asc, name desc").should == "title asc,name desc"
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
66
71
|
describe "#to_params" do
|
67
72
|
it "returns a Hash" do
|
68
73
|
criteria.to_params.should be_an_instance_of(Hash)
|
@@ -77,13 +82,36 @@ describe Supernova::SolrCriteria do
|
|
77
82
|
end
|
78
83
|
|
79
84
|
it "sets the order field" do
|
80
|
-
criteria.order("title").to_params[:sort].should == "title"
|
85
|
+
criteria.order("title asc").to_params[:sort].should == "title asc"
|
86
|
+
end
|
87
|
+
|
88
|
+
it "allows more complex order fields" do
|
89
|
+
criteria.order("title asc, name desc").to_params[:sort].should == "title asc,name desc"
|
90
|
+
end
|
91
|
+
|
92
|
+
it "adds raw fields when not able to extract asc or desc" do
|
93
|
+
criteria.order("some_order_func, test asc").to_params[:sort].should == "some_order_func,test asc"
|
94
|
+
end
|
95
|
+
|
96
|
+
it "chains order statements" do
|
97
|
+
criteria.order("name asc").order("title desc").to_params[:sort].should == "name asc,title desc"
|
81
98
|
end
|
82
99
|
|
83
100
|
it "uses a mapped field for order" do
|
84
|
-
criteria.attribute_mapping(:title => { :type => :string }).order("title").to_params[:sort].should == "title_s"
|
101
|
+
criteria.attribute_mapping(:title => { :type => :string }).order("title asc").to_params[:sort].should == "title_s asc"
|
102
|
+
end
|
103
|
+
|
104
|
+
it "allows multi mappings of order criteria when given in one string" do
|
105
|
+
scope = criteria.attribute_mapping(:title => { :type => :string }, :visits => { :type => :integer })
|
106
|
+
scope.order("title asc, visits desc").to_params[:sort].should == "title_s asc,visits_i desc"
|
85
107
|
end
|
86
108
|
|
109
|
+
it "allows multi mappings of order criteria when chained" do
|
110
|
+
scope = criteria.attribute_mapping(:title => { :type => :string }, :visits => { :type => :integer })
|
111
|
+
scope.order("title asc").order("visits desc").to_params[:sort].should == "title_s asc,visits_i desc"
|
112
|
+
end
|
113
|
+
|
114
|
+
|
87
115
|
%w(asc desc).each do |order|
|
88
116
|
it "uses a mapped field for order even when #{order} is present" do
|
89
117
|
criteria.attribute_mapping(:title => { :type => :string }).order("title #{order}").to_params[:sort].should == "title_s #{order}"
|
@@ -162,6 +190,10 @@ describe Supernova::SolrCriteria do
|
|
162
190
|
end
|
163
191
|
end
|
164
192
|
|
193
|
+
it "allows setting of rows" do
|
194
|
+
criteria.rows(11).to_params[:rows].should == 11
|
195
|
+
end
|
196
|
+
|
165
197
|
describe "pagination" do
|
166
198
|
it "sets the correct rows" do
|
167
199
|
criteria.paginate(:page => 1, :per_page => 10).to_params[:rows].should == 10
|
@@ -211,9 +243,10 @@ describe Supernova::SolrCriteria do
|
|
211
243
|
|
212
244
|
describe "#ids" do
|
213
245
|
it "sets the select fields to id only" do
|
214
|
-
|
215
|
-
criteria.
|
216
|
-
|
246
|
+
scope = double("scope")
|
247
|
+
criteria.should_receive(:only_ids).and_return(scope)
|
248
|
+
scope.should_receive(:execute).and_return([])
|
249
|
+
criteria.ids.should == []
|
217
250
|
end
|
218
251
|
|
219
252
|
it "calls execute" do
|
@@ -223,16 +256,45 @@ describe Supernova::SolrCriteria do
|
|
223
256
|
|
224
257
|
it "maps the id hashes to ids" do
|
225
258
|
criteria.stub(:execute).and_return([ { "id" => "offer/1" }, { "id" => "offer/3" } ])
|
226
|
-
criteria.ids
|
259
|
+
criteria.ids.should == [1, 3]
|
260
|
+
end
|
261
|
+
end
|
262
|
+
|
263
|
+
describe "#format" do
|
264
|
+
it "sets the correct search_options" do
|
265
|
+
criteria.format("csv").search_options[:wt].should == "csv"
|
266
|
+
end
|
267
|
+
|
268
|
+
it "includes the format in the params" do
|
269
|
+
criteria.format("csv").to_params[:wt].should == "csv"
|
270
|
+
end
|
271
|
+
|
272
|
+
it "allows overriding of formats" do
|
273
|
+
criteria.format("csv").format("json").to_params[:wt].should == "json"
|
227
274
|
end
|
228
275
|
end
|
276
|
+
|
277
|
+
describe "#only_ids" do
|
278
|
+
it "returns a criteria" do
|
279
|
+
criteria.only_ids.should be_kind_of(Supernova::SolrCriteria)
|
280
|
+
end
|
281
|
+
|
282
|
+
it "only selects the id column" do
|
283
|
+
a = criteria.select("name_s").only_ids
|
284
|
+
a.to_params[:fl].should == "id"
|
285
|
+
end
|
286
|
+
|
287
|
+
# it "does something" do
|
288
|
+
#
|
289
|
+
# end
|
290
|
+
end
|
229
291
|
|
230
292
|
describe "#execute" do
|
231
|
-
let(:params) {
|
293
|
+
let(:params) { {} }
|
232
294
|
|
233
295
|
before(:each) do
|
296
|
+
criteria.stub(:execute_raw).and_return(solr_response)
|
234
297
|
criteria.stub(:to_params).and_return params
|
235
|
-
rsolr.stub!(:post).and_return solr_response
|
236
298
|
end
|
237
299
|
|
238
300
|
it "sets the original response" do
|
@@ -240,12 +302,7 @@ describe Supernova::SolrCriteria do
|
|
240
302
|
end
|
241
303
|
|
242
304
|
it "calls to_params" do
|
243
|
-
criteria.should_receive(:
|
244
|
-
criteria.execute
|
245
|
-
end
|
246
|
-
|
247
|
-
it "calls get with select and params" do
|
248
|
-
rsolr.should_receive(:post).with("select", :data => params).and_return solr_response
|
305
|
+
criteria.should_receive(:execute_raw).and_return solr_response
|
249
306
|
criteria.execute
|
250
307
|
end
|
251
308
|
|
@@ -292,7 +349,7 @@ describe Supernova::SolrCriteria do
|
|
292
349
|
end
|
293
350
|
|
294
351
|
it "sets the correct facets" do
|
295
|
-
|
352
|
+
criteria.stub!(:execute_raw).and_return(facet_response)
|
296
353
|
criteria.should_receive(:hashify_facets_from_response).with(facet_response).and_return({ :a => 1 })
|
297
354
|
criteria.execute.facets.should == {:a => 1}
|
298
355
|
end
|