supernova 0.6.4 → 0.6.5
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.
- data/VERSION +1 -1
- data/lib/supernova/criteria.rb +10 -2
- data/lib/supernova/solr_criteria.rb +6 -1
- data/spec/integration/solr_spec.rb +19 -0
- data/spec/supernova/criteria_spec.rb +14 -0
- data/spec/supernova/solr_criteria_spec.rb +20 -2
- data/supernova.gemspec +2 -2
- metadata +4 -4
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.6.
|
1
|
+
0.6.5
|
data/lib/supernova/criteria.rb
CHANGED
@@ -82,6 +82,10 @@ class Supernova::Criteria
|
|
82
82
|
merge_search_options :pagination, pagination_options
|
83
83
|
end
|
84
84
|
|
85
|
+
def rows(number)
|
86
|
+
merge_search_options :pagination, :per_page => number
|
87
|
+
end
|
88
|
+
|
85
89
|
def near(*coordinates)
|
86
90
|
merge_search_options :geo_center, normalize_coordinates(*coordinates)
|
87
91
|
end
|
@@ -166,11 +170,15 @@ class Supernova::Criteria
|
|
166
170
|
end
|
167
171
|
|
168
172
|
def per_page
|
169
|
-
|
173
|
+
ret = self.search_options[:pagination][:per_page] if self.search_options[:pagination]
|
174
|
+
ret = DEFAULT_PER_PAGE if ret.nil?
|
175
|
+
ret
|
170
176
|
end
|
171
177
|
|
172
178
|
def pagination_attribute_when_greater_zero(attribute)
|
173
|
-
|
179
|
+
if self.search_options[:pagination] && self.search_options[:pagination][attribute].to_i > 0
|
180
|
+
self.search_options[:pagination][attribute]
|
181
|
+
end
|
174
182
|
end
|
175
183
|
|
176
184
|
def implement_in_subclass
|
@@ -168,10 +168,15 @@ class Supernova::SolrCriteria < Supernova::Criteria
|
|
168
168
|
|
169
169
|
def execute
|
170
170
|
response = Supernova::Solr.connection.post("select", :data => to_params)
|
171
|
-
collection = Supernova::Collection.new(current_page, per_page, response["response"]["numFound"])
|
171
|
+
collection = Supernova::Collection.new(current_page, per_page == 0 ? 1 : per_page, response["response"]["numFound"])
|
172
172
|
collection.original_response = response
|
173
173
|
collection.facets = hashify_facets_from_response(response)
|
174
174
|
collection.replace(build_docs(response["response"]["docs"]))
|
175
175
|
collection
|
176
176
|
end
|
177
|
+
|
178
|
+
def ids
|
179
|
+
select("id")
|
180
|
+
execute.map! { |h| h["id"].split("/").last.to_i }
|
181
|
+
end
|
177
182
|
end
|
@@ -252,6 +252,25 @@ describe "Solr" do
|
|
252
252
|
end
|
253
253
|
end
|
254
254
|
|
255
|
+
describe "#ids" do
|
256
|
+
it "only returns the ids in a collection" do
|
257
|
+
result = new_criteria.ids
|
258
|
+
result.should be_kind_of(Supernova::Collection)
|
259
|
+
result.should == [1, 2]
|
260
|
+
result.total_entries.should == 2
|
261
|
+
end
|
262
|
+
|
263
|
+
it "does include facets" do
|
264
|
+
new_criteria.facet_fields(:enabled_b).ids.facets.should == { "enabled_b" => { "true" => 1, "false" => 1 } }
|
265
|
+
end
|
266
|
+
|
267
|
+
it "returns 0 rows" do
|
268
|
+
response = new_criteria.rows(0).facet_fields(:enabled_b).ids
|
269
|
+
response.should be_empty
|
270
|
+
response.facets.should == { "enabled_b" => { "true" => 1, "false" => 1 } }
|
271
|
+
end
|
272
|
+
end
|
273
|
+
|
255
274
|
describe "with mapping" do
|
256
275
|
before(:each) do
|
257
276
|
@clazz = Class.new(Supernova::SolrIndexer)
|
@@ -102,6 +102,20 @@ describe "Supernova::Criteria" do
|
|
102
102
|
scope.paginate(:page => 9, :per_page => 2).search_options[:pagination].should == { :page => 9, :per_page => 2 }
|
103
103
|
end
|
104
104
|
|
105
|
+
it "sets per_page to number of rows when rows specified" do
|
106
|
+
scope.rows(0).search_options[:pagination].should == { :per_page => 0 }
|
107
|
+
end
|
108
|
+
|
109
|
+
describe "#per_page" do
|
110
|
+
it "allows setting of pagination to 0" do
|
111
|
+
scope.paginate(:per_page => 0).per_page.should == 0
|
112
|
+
end
|
113
|
+
|
114
|
+
it "" do
|
115
|
+
scope.paginate(:per_page => nil).per_page.should == 25
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
105
119
|
describe "#without" do
|
106
120
|
it "sets the correct without filter" do
|
107
121
|
scope.without(:user_id => 1).filters[:without].should == { :user_id => [1] }
|
@@ -208,6 +208,24 @@ describe Supernova::SolrCriteria do
|
|
208
208
|
criteria.attribute_mapping(:artist_name => { :type => :string }).solr_field_from_field(:artist_name).should == "artist_name_s"
|
209
209
|
end
|
210
210
|
end
|
211
|
+
|
212
|
+
describe "#ids" do
|
213
|
+
it "sets the select fields to id only" do
|
214
|
+
criteria.should_receive(:select).with("id")
|
215
|
+
criteria.stub!(:execute).and_return([])
|
216
|
+
criteria.ids
|
217
|
+
end
|
218
|
+
|
219
|
+
it "calls execute" do
|
220
|
+
criteria.should_receive(:execute).and_return([])
|
221
|
+
criteria.ids
|
222
|
+
end
|
223
|
+
|
224
|
+
it "maps the id hashes to ids" do
|
225
|
+
criteria.stub(:execute).and_return([ { "id" => "offer/1" }, { "id" => "offer/3" } ])
|
226
|
+
criteria.ids
|
227
|
+
end
|
228
|
+
end
|
211
229
|
|
212
230
|
describe "#execute" do
|
213
231
|
let(:params) { double("params") }
|
@@ -504,8 +522,8 @@ describe Supernova::SolrCriteria do
|
|
504
522
|
criteria.paginate(:page => 3, :per_page => nil).per_page.should == 25
|
505
523
|
end
|
506
524
|
|
507
|
-
it "returns
|
508
|
-
criteria.paginate(:page => 3, :per_page => 0).per_page.should ==
|
525
|
+
it "returns 0 when set to 0" do
|
526
|
+
criteria.paginate(:page => 3, :per_page => 0).per_page.should == 0
|
509
527
|
end
|
510
528
|
|
511
529
|
it "returns the custom value when set" do
|
data/supernova.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{supernova}
|
8
|
-
s.version = "0.6.
|
8
|
+
s.version = "0.6.5"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Tobias Schwab"]
|
12
|
-
s.date = %q{2011-
|
12
|
+
s.date = %q{2011-09-01}
|
13
13
|
s.default_executable = %q{start_solr}
|
14
14
|
s.description = %q{Unified search scopes}
|
15
15
|
s.email = %q{tobias.schwab@dynport.de}
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: supernova
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 13
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 6
|
9
|
-
-
|
10
|
-
version: 0.6.
|
9
|
+
- 5
|
10
|
+
version: 0.6.5
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Tobias Schwab
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
18
|
+
date: 2011-09-01 00:00:00 +02:00
|
19
19
|
default_executable: start_solr
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|