picky 3.2.0 → 3.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/aux/picky/cli.rb +3 -1
- data/lib/picky/backends/backend.rb +16 -0
- data/lib/picky/backends/file/basic.rb +18 -9
- data/lib/picky/backends/file/json.rb +1 -0
- data/lib/picky/backends/file.rb +8 -4
- data/lib/picky/backends/helpers/file.rb +6 -0
- data/lib/picky/backends/memory/basic.rb +10 -2
- data/lib/picky/backends/memory/json.rb +1 -6
- data/lib/picky/backends/memory/marshal.rb +1 -6
- data/lib/picky/backends/memory/text.rb +1 -0
- data/lib/picky/backends/memory.rb +8 -4
- data/lib/picky/backends/redis/basic.rb +12 -9
- data/lib/picky/backends/redis.rb +10 -4
- data/lib/picky/bundle.rb +14 -0
- data/lib/picky/bundle_indexed.rb +110 -0
- data/lib/picky/bundle_indexing.rb +177 -0
- data/lib/picky/bundle_realtime.rb +80 -0
- data/lib/picky/categories.rb +5 -1
- data/lib/picky/category.rb +12 -20
- data/lib/picky/category_indexed.rb +3 -6
- data/lib/picky/category_indexing.rb +19 -18
- data/lib/picky/category_realtime.rb +5 -10
- data/lib/picky/extensions/symbol.rb +1 -1
- data/lib/picky/generators/partial/default.rb +1 -1
- data/lib/picky/generators/partial/postfix.rb +30 -0
- data/lib/picky/generators/partial/substring.rb +8 -2
- data/lib/picky/index.rb +3 -3
- data/lib/picky/index_indexing.rb +3 -2
- data/lib/picky/indexers/base.rb +0 -8
- data/lib/picky/indexers/parallel.rb +1 -1
- data/lib/picky/loader.rb +15 -15
- data/lib/picky/query/qualifier_category_mapper.rb +1 -1
- data/lib/picky/rack/harakiri.rb +3 -1
- data/lib/picky/sources/db.rb +11 -0
- data/lib/picky/statistics.rb +2 -2
- data/lib/picky/tokenizer.rb +1 -1
- data/lib/picky/tokenizers/location.rb +1 -1
- data/lib/picky/wrappers/bundle/calculation.rb +45 -0
- data/lib/picky/wrappers/bundle/delegators.rb +69 -0
- data/lib/picky/wrappers/bundle/exact_partial.rb +38 -0
- data/lib/picky/{indexed/wrappers → wrappers}/bundle/location.rb +6 -4
- data/lib/picky/wrappers/bundle/wrapper.rb +29 -0
- data/lib/picky/wrappers/category/exact_first.rb +55 -0
- data/lib/picky/wrappers/category/location.rb +33 -0
- data/lib/picky/{sources/wrappers → wrappers/sources}/base.rb +7 -3
- data/lib/picky/{sources/wrappers → wrappers/sources}/location.rb +3 -3
- data/lib/picky.rb +10 -11
- data/spec/aux/picky/cli_spec.rb +5 -5
- data/spec/lib/backends/backend_spec.rb +39 -0
- data/spec/lib/backends/file/basic_spec.rb +59 -0
- data/spec/lib/backends/file_spec.rb +105 -0
- data/spec/lib/backends/memory/basic_spec.rb +43 -15
- data/spec/lib/backends/memory_spec.rb +108 -54
- data/spec/lib/backends/redis/basic_spec.rb +81 -57
- data/spec/lib/backends/redis_spec.rb +120 -66
- data/spec/lib/category_indexed_spec.rb +12 -12
- data/spec/lib/category_indexing_spec.rb +23 -23
- data/spec/lib/category_spec.rb +14 -14
- data/spec/lib/cores_spec.rb +2 -2
- data/spec/lib/extensions/object_spec.rb +7 -7
- data/spec/lib/generators/partial/postfix_spec.rb +131 -0
- data/spec/lib/generators/partial/substring_spec.rb +29 -4
- data/spec/lib/generators/weights_generator_spec.rb +3 -3
- data/spec/lib/index_indexing_spec.rb +11 -15
- data/spec/lib/index_spec.rb +8 -8
- data/spec/lib/indexed/bundle_realtime_spec.rb +18 -18
- data/spec/lib/indexed/bundle_spec.rb +21 -21
- data/spec/lib/indexed/wrappers/bundle/calculation_spec.rb +9 -9
- data/spec/lib/indexed/wrappers/bundle/wrapper_spec.rb +8 -8
- data/spec/lib/indexed/wrappers/exact_first_spec.rb +16 -16
- data/spec/lib/indexers/base_spec.rb +6 -25
- data/spec/lib/indexes_spec.rb +33 -22
- data/spec/lib/indexing/bundle_partial_generation_speed_spec.rb +2 -2
- data/spec/lib/indexing/bundle_spec.rb +27 -28
- data/spec/lib/sources/wrappers/base_spec.rb +7 -7
- data/spec/lib/sources/wrappers/location_spec.rb +8 -8
- metadata +48 -38
- data/lib/picky/indexed/bundle.rb +0 -125
- data/lib/picky/indexed/bundle_realtime.rb +0 -76
- data/lib/picky/indexed/wrappers/bundle/calculation.rb +0 -47
- data/lib/picky/indexed/wrappers/bundle/wrapper.rb +0 -47
- data/lib/picky/indexed/wrappers/category/location.rb +0 -31
- data/lib/picky/indexed/wrappers/exact_first.rb +0 -59
- data/lib/picky/indexing/bundle.rb +0 -183
- data/lib/picky/indexing/wrappers/category/location.rb +0 -29
@@ -1,22 +1,22 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Picky::Category do
|
4
|
-
|
4
|
+
|
5
5
|
before(:each) do
|
6
6
|
@index = Picky::Index.new :some_index
|
7
7
|
@source = stub :some_given_source, :key_format => nil
|
8
8
|
end
|
9
9
|
let(:category) { described_class.new(:some_category, @index, :source => @source).tap { |c| c.stub! :timed_exclaim } }
|
10
|
-
|
10
|
+
|
11
11
|
context "unit specs" do
|
12
|
-
let(:exact) { category.
|
13
|
-
let(:partial) { category.
|
14
|
-
|
12
|
+
let(:exact) { category.exact }
|
13
|
+
let(:partial) { category.partial }
|
14
|
+
|
15
15
|
describe 'backup' do
|
16
16
|
it 'delegates to both bundles' do
|
17
17
|
exact.should_receive(:backup).once.with()
|
18
18
|
partial.should_receive(:backup).once.with()
|
19
|
-
|
19
|
+
|
20
20
|
category.backup
|
21
21
|
end
|
22
22
|
end
|
@@ -24,7 +24,7 @@ describe Picky::Category do
|
|
24
24
|
it 'delegates to both bundles' do
|
25
25
|
exact.should_receive(:restore).once.with()
|
26
26
|
partial.should_receive(:restore).once.with()
|
27
|
-
|
27
|
+
|
28
28
|
category.restore
|
29
29
|
end
|
30
30
|
end
|
@@ -32,7 +32,7 @@ describe Picky::Category do
|
|
32
32
|
it 'delegates to both bundles' do
|
33
33
|
exact.should_receive(:raise_unless_cache_exists).once.with()
|
34
34
|
partial.should_receive(:raise_unless_cache_exists).once.with()
|
35
|
-
|
35
|
+
|
36
36
|
category.check
|
37
37
|
end
|
38
38
|
end
|
@@ -40,12 +40,12 @@ describe Picky::Category do
|
|
40
40
|
it 'delegates to both bundles' do
|
41
41
|
exact.should_receive(:delete).once.with()
|
42
42
|
partial.should_receive(:delete).once.with()
|
43
|
-
|
43
|
+
|
44
44
|
category.clear
|
45
45
|
end
|
46
46
|
end
|
47
|
-
|
48
|
-
describe '
|
47
|
+
|
48
|
+
describe 'dump' do
|
49
49
|
before(:each) do
|
50
50
|
exact.stub! :dump
|
51
51
|
partial.stub! :dump
|
@@ -53,23 +53,23 @@ describe Picky::Category do
|
|
53
53
|
it 'should dump the exact index' do
|
54
54
|
exact.should_receive(:dump).once.with
|
55
55
|
|
56
|
-
category.
|
56
|
+
category.dump
|
57
57
|
end
|
58
58
|
it 'should dump the partial index' do
|
59
59
|
partial.should_receive(:dump).once.with
|
60
60
|
|
61
|
-
category.
|
61
|
+
category.dump
|
62
62
|
end
|
63
63
|
end
|
64
|
-
|
64
|
+
|
65
65
|
describe 'generate_caches_from_memory' do
|
66
66
|
it 'should delegate to partial' do
|
67
67
|
partial.should_receive(:generate_caches_from_memory).once.with
|
68
|
-
|
68
|
+
|
69
69
|
category.generate_caches_from_memory
|
70
70
|
end
|
71
71
|
end
|
72
|
-
|
72
|
+
|
73
73
|
describe 'generate_partial' do
|
74
74
|
it 'should return whatever the partial generation returns' do
|
75
75
|
exact.stub! :index
|
@@ -99,13 +99,13 @@ describe Picky::Category do
|
|
99
99
|
category.should_receive(:generate_caches_from_source).once.with().ordered
|
100
100
|
category.should_receive(:generate_partial).once.with().ordered
|
101
101
|
category.should_receive(:generate_caches_from_memory).once.with().ordered
|
102
|
-
category.should_receive(:
|
102
|
+
category.should_receive(:dump).once.with().ordered
|
103
103
|
category.should_receive(:timed_exclaim).once.ordered
|
104
|
-
|
104
|
+
|
105
105
|
category.cache
|
106
106
|
end
|
107
107
|
end
|
108
|
-
|
108
|
+
|
109
109
|
describe 'key_format' do
|
110
110
|
context 'source has key_format' do
|
111
111
|
before(:each) do
|
@@ -142,7 +142,7 @@ describe Picky::Category do
|
|
142
142
|
end
|
143
143
|
end
|
144
144
|
end
|
145
|
-
|
145
|
+
|
146
146
|
describe 'source' do
|
147
147
|
context 'with explicit source' do
|
148
148
|
let(:category) { described_class.new(:some_category, @index, :source => :category_source) }
|
@@ -157,7 +157,7 @@ describe Picky::Category do
|
|
157
157
|
end
|
158
158
|
end
|
159
159
|
end
|
160
|
-
|
160
|
+
|
161
161
|
describe "index" do
|
162
162
|
before(:each) do
|
163
163
|
@indexer = stub :indexer, :index => nil
|
@@ -165,7 +165,7 @@ describe Picky::Category do
|
|
165
165
|
end
|
166
166
|
it "tells the indexer to index" do
|
167
167
|
@indexer.should_receive(:index).once.with [category]
|
168
|
-
|
168
|
+
|
169
169
|
category.prepare
|
170
170
|
end
|
171
171
|
end
|
@@ -177,5 +177,5 @@ describe Picky::Category do
|
|
177
177
|
end
|
178
178
|
end
|
179
179
|
end
|
180
|
-
|
180
|
+
|
181
181
|
end
|
data/spec/lib/category_spec.rb
CHANGED
@@ -1,22 +1,22 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Picky::Category do
|
4
|
-
|
4
|
+
|
5
5
|
let(:index) { Picky::Index.new :some_index }
|
6
6
|
let(:category) { described_class.new :some_category, index }
|
7
|
-
|
7
|
+
|
8
8
|
it 'should set defaults correctly' do
|
9
|
-
category.
|
10
|
-
category.
|
11
|
-
category.
|
12
|
-
|
13
|
-
category.
|
14
|
-
category.
|
15
|
-
category.
|
16
|
-
|
17
|
-
category.
|
18
|
-
|
19
|
-
category.
|
9
|
+
category.exact.weights_strategy.should == Picky::Generators::Weights::Default
|
10
|
+
category.exact.partial_strategy.should be_kind_of(Picky::Generators::Partial::None)
|
11
|
+
category.exact.similarity_strategy.should == Picky::Generators::Similarity::Default
|
12
|
+
|
13
|
+
category.partial.weights_strategy.should be_kind_of(Picky::Generators::Weights::Logarithmic)
|
14
|
+
category.partial.partial_strategy.should == Picky::Generators::Partial::Default
|
15
|
+
category.partial.similarity_strategy.should be_kind_of(Picky::Generators::Similarity::None)
|
16
|
+
|
17
|
+
category.exact.similarity_strategy.should == Picky::Generators::Similarity::Default
|
18
|
+
|
19
|
+
category.partial.similarity_strategy.should be_kind_of(Picky::Generators::Similarity::None)
|
20
20
|
end
|
21
|
-
|
21
|
+
|
22
22
|
end
|
data/spec/lib/cores_spec.rb
CHANGED
@@ -125,8 +125,8 @@ describe Picky::Cores do
|
|
125
125
|
|
126
126
|
describe 'number_of_cores' do
|
127
127
|
before(:each) do
|
128
|
-
@linux = mock
|
129
|
-
@darwin = mock
|
128
|
+
@linux = mock(:linux).as_null_object
|
129
|
+
@darwin = mock(:darwin).as_null_object
|
130
130
|
described_class.stub! :os_to_core_mapping => {
|
131
131
|
'linux' => @linux,
|
132
132
|
'darwin' => @darwin
|
@@ -33,26 +33,26 @@ describe Object do
|
|
33
33
|
|
34
34
|
describe 'indented_to_s' do
|
35
35
|
describe String do
|
36
|
-
let(:
|
36
|
+
let(:string) { String.new("Hello\nTest") }
|
37
37
|
|
38
38
|
it 'indents a default amount' do
|
39
|
-
|
39
|
+
string.indented_to_s.should == " Hello\n Test"
|
40
40
|
end
|
41
41
|
it 'indents twice' do
|
42
|
-
|
42
|
+
string.indented_to_s.indented_to_s.should == " Hello\n Test"
|
43
43
|
end
|
44
44
|
it 'indents correctly' do
|
45
|
-
|
45
|
+
string.indented_to_s(3).should == " Hello\n Test"
|
46
46
|
end
|
47
47
|
end
|
48
48
|
describe Array do
|
49
|
-
let(:
|
49
|
+
let(:array) { Array.new(["Hello", "Test"]) }
|
50
50
|
|
51
51
|
it 'indents a default amount' do
|
52
|
-
|
52
|
+
array.indented_to_s.should == " Hello\n Test"
|
53
53
|
end
|
54
54
|
it 'indents twice' do
|
55
|
-
|
55
|
+
array.indented_to_s.indented_to_s.should == " Hello\n Test"
|
56
56
|
end
|
57
57
|
end
|
58
58
|
end
|
@@ -0,0 +1,131 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Picky::Generators::Partial::Postfix do
|
4
|
+
|
5
|
+
context 'default from' do
|
6
|
+
let(:generator) { described_class.new }
|
7
|
+
|
8
|
+
describe 'use_exact_for_partial?' do
|
9
|
+
it 'returns false' do
|
10
|
+
described_class.new.use_exact_for_partial?.should == false
|
11
|
+
end
|
12
|
+
end
|
13
|
+
describe 'from' do
|
14
|
+
it 'should return the right value' do
|
15
|
+
generator.from.should == 1
|
16
|
+
end
|
17
|
+
end
|
18
|
+
describe 'generate_from' do
|
19
|
+
it 'should generate the right index' do
|
20
|
+
generator.generate_from(florian: [1], flavia: [2]).should == {
|
21
|
+
florian: [1],
|
22
|
+
floria: [1],
|
23
|
+
flori: [1],
|
24
|
+
flor: [1],
|
25
|
+
flo: [1],
|
26
|
+
fl: [1, 2],
|
27
|
+
f: [1, 2],
|
28
|
+
flavia: [2],
|
29
|
+
flavi: [2],
|
30
|
+
flav: [2],
|
31
|
+
fla: [2]
|
32
|
+
}
|
33
|
+
end
|
34
|
+
it "should be fast" do
|
35
|
+
performance_of { generator.generate_from(florian: [1], flavia: [2]) }.should < 0.0001
|
36
|
+
end
|
37
|
+
it "should handle duplicate ids" do
|
38
|
+
generator.generate_from(flo: [1], fla: [1]).should == {
|
39
|
+
flo: [1],
|
40
|
+
fl: [1],
|
41
|
+
f: [1],
|
42
|
+
fla: [1]
|
43
|
+
}
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
context 'specific negative from' do
|
48
|
+
describe 'negative from' do
|
49
|
+
before(:each) do
|
50
|
+
@generator = described_class.new from: -2
|
51
|
+
end
|
52
|
+
it 'should generate the right index' do
|
53
|
+
@generator.generate_from(florian: [1], flavia: [2]).should == {
|
54
|
+
florian: [1],
|
55
|
+
floria: [1],
|
56
|
+
flavia: [2],
|
57
|
+
flavi: [2]
|
58
|
+
}
|
59
|
+
end
|
60
|
+
end
|
61
|
+
context "large from" do
|
62
|
+
before(:each) do
|
63
|
+
@generator = described_class.new from: 10
|
64
|
+
end
|
65
|
+
describe 'generate_from' do
|
66
|
+
it 'should generate the right index' do
|
67
|
+
@generator.generate_from(florian: [1], :'01234567890' => [2] ).should == {
|
68
|
+
:florian => [1],
|
69
|
+
:'01234567890' => [2],
|
70
|
+
:'0123456789' => [2]
|
71
|
+
}
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
context 'specific positive from' do
|
76
|
+
before(:each) do
|
77
|
+
@generator = described_class.new from: 4
|
78
|
+
end
|
79
|
+
describe 'to' do
|
80
|
+
it 'should return the right value' do
|
81
|
+
@generator.to.should == -1
|
82
|
+
end
|
83
|
+
end
|
84
|
+
describe 'from' do
|
85
|
+
it 'should return the right value' do
|
86
|
+
@generator.from.should == 4
|
87
|
+
end
|
88
|
+
end
|
89
|
+
describe 'generate_from' do
|
90
|
+
it 'should generate the right index' do
|
91
|
+
@generator.generate_from( :florian => [1], :flavia => [2] ).should == {
|
92
|
+
:florian => [1],
|
93
|
+
:floria => [1],
|
94
|
+
:flori => [1],
|
95
|
+
:flor => [1],
|
96
|
+
:flavia => [2],
|
97
|
+
:flavi => [2],
|
98
|
+
:flav => [2]
|
99
|
+
}
|
100
|
+
end
|
101
|
+
end
|
102
|
+
describe "a bigger example with disjunct symbols" do
|
103
|
+
before(:each) do
|
104
|
+
abc = ('A'..'Z').to_a + ('a'..'z').to_a
|
105
|
+
@index = {}
|
106
|
+
52.times do |i|
|
107
|
+
@index[abc.join.to_sym] = [i]
|
108
|
+
character = abc.shift
|
109
|
+
abc << character
|
110
|
+
end
|
111
|
+
end
|
112
|
+
it "should be fast" do
|
113
|
+
performance_of { @generator.generate_from(@index) }.should < 0.008
|
114
|
+
end
|
115
|
+
end
|
116
|
+
describe "a bigger example with almost identical symbols" do
|
117
|
+
before(:each) do
|
118
|
+
abc = ('A'..'Z').to_a + ('a'..'z').to_a
|
119
|
+
@index = {}
|
120
|
+
52.times do |i|
|
121
|
+
@index[(abc.join + abc[i].to_s).to_sym] = [i]
|
122
|
+
end
|
123
|
+
end
|
124
|
+
it "should be fast" do
|
125
|
+
performance_of { @generator.generate_from(@index) }.should < 0.0045
|
126
|
+
end
|
127
|
+
end
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
131
|
+
end
|
@@ -1,10 +1,10 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Picky::Generators::Partial::Substring do
|
4
|
-
|
4
|
+
|
5
5
|
context 'default from' do
|
6
6
|
let(:generator) { described_class.new }
|
7
|
-
|
7
|
+
|
8
8
|
describe 'use_exact_for_partial?' do
|
9
9
|
it 'returns false' do
|
10
10
|
described_class.new.use_exact_for_partial?.should == false
|
@@ -24,7 +24,7 @@ describe Picky::Generators::Partial::Substring do
|
|
24
24
|
flor: [1],
|
25
25
|
flo: [1],
|
26
26
|
fl: [1, 2],
|
27
|
-
f: [1, 2],
|
27
|
+
f: [1, 2],
|
28
28
|
flavia: [2],
|
29
29
|
flavi: [2],
|
30
30
|
flav: [2],
|
@@ -180,6 +180,31 @@ describe Picky::Generators::Partial::Substring do
|
|
180
180
|
end
|
181
181
|
end
|
182
182
|
end
|
183
|
+
context 'to set, negative from' do
|
184
|
+
before(:each) do
|
185
|
+
@generator = described_class.new from: -3, to: -2
|
186
|
+
end
|
187
|
+
describe 'to' do
|
188
|
+
it 'should return the right value' do
|
189
|
+
@generator.to.should == -2
|
190
|
+
end
|
191
|
+
end
|
192
|
+
describe 'from' do
|
193
|
+
it 'should return the right value' do
|
194
|
+
@generator.from.should == -3
|
195
|
+
end
|
196
|
+
end
|
197
|
+
describe 'generate_from' do
|
198
|
+
it 'should generate the right index' do
|
199
|
+
@generator.generate_from( :florian => [1], :flavia => [2] ).should == {
|
200
|
+
:floria => [1],
|
201
|
+
:flori => [1],
|
202
|
+
:flavi => [2],
|
203
|
+
:flav => [2]
|
204
|
+
}
|
205
|
+
end
|
206
|
+
end
|
207
|
+
end
|
183
208
|
end
|
184
|
-
|
209
|
+
|
185
210
|
end
|
@@ -12,9 +12,9 @@ describe Picky::Generators::WeightsGenerator do
|
|
12
12
|
|
13
13
|
result = generator.generate
|
14
14
|
|
15
|
-
result[:c].should
|
16
|
-
result[:d].should
|
17
|
-
result[:e].should
|
15
|
+
result[:c].should be_within(0.011).of(2.3)
|
16
|
+
result[:d].should be_within(0.011).of(4.6)
|
17
|
+
result[:e].should be_within(0.011).of(6.9)
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Picky::Index do
|
4
|
-
|
4
|
+
|
5
5
|
describe 'tokenizer' do
|
6
6
|
context 'with tokenizer' do
|
7
7
|
let(:tokenizer) { stub :tokenizer, :tokenize => '' }
|
@@ -29,7 +29,7 @@ describe Picky::Index do
|
|
29
29
|
end
|
30
30
|
end
|
31
31
|
end
|
32
|
-
|
32
|
+
|
33
33
|
context 'after_indexing' do
|
34
34
|
context 'with it set' do
|
35
35
|
let(:index) do
|
@@ -51,7 +51,7 @@ describe Picky::Index do
|
|
51
51
|
end
|
52
52
|
end
|
53
53
|
end
|
54
|
-
|
54
|
+
|
55
55
|
context 'in general' do
|
56
56
|
context 'with #each source' do
|
57
57
|
let(:index) do
|
@@ -77,24 +77,20 @@ describe Picky::Index do
|
|
77
77
|
end
|
78
78
|
|
79
79
|
it 'does things in order' do
|
80
|
-
|
81
|
-
index.stub! :categories =>
|
82
|
-
category,
|
83
|
-
category,
|
84
|
-
category
|
85
|
-
]
|
80
|
+
categories = stub :categories
|
81
|
+
index.stub! :categories => categories
|
86
82
|
|
87
|
-
|
83
|
+
categories.should_receive(:index).once
|
88
84
|
|
89
85
|
index.index
|
90
86
|
end
|
91
87
|
end
|
92
88
|
end
|
93
|
-
|
89
|
+
|
94
90
|
context "with categories" do
|
95
91
|
before(:each) do
|
96
92
|
the_source = []
|
97
|
-
|
93
|
+
|
98
94
|
@index = described_class.new :some_name do
|
99
95
|
source the_source
|
100
96
|
end
|
@@ -109,7 +105,7 @@ describe Picky::Index do
|
|
109
105
|
describe 'define_source' do
|
110
106
|
it 'can be set with this method' do
|
111
107
|
source = stub :source, :each => [].each
|
112
|
-
|
108
|
+
|
113
109
|
@index.define_source source
|
114
110
|
|
115
111
|
@index.source.should == source
|
@@ -138,7 +134,7 @@ describe Picky::Index do
|
|
138
134
|
end
|
139
135
|
end
|
140
136
|
end
|
141
|
-
|
137
|
+
|
142
138
|
context "no categories" do
|
143
139
|
it "works" do
|
144
140
|
described_class.new :some_name do
|
@@ -146,5 +142,5 @@ describe Picky::Index do
|
|
146
142
|
end
|
147
143
|
end
|
148
144
|
end
|
149
|
-
|
145
|
+
|
150
146
|
end
|
data/spec/lib/index_spec.rb
CHANGED
@@ -3,9 +3,9 @@
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
5
|
describe Picky::Index do
|
6
|
-
|
6
|
+
|
7
7
|
let(:some_source) { stub :source, :harvest => nil, :inspect => 'some_source' }
|
8
|
-
|
8
|
+
|
9
9
|
context 'initializer' do
|
10
10
|
it 'works' do
|
11
11
|
the_source = some_source
|
@@ -22,16 +22,16 @@ describe Picky::Index do
|
|
22
22
|
end
|
23
23
|
it 'registers with the indexes' do
|
24
24
|
@api = described_class.allocate
|
25
|
-
|
25
|
+
|
26
26
|
Picky::Indexes.should_receive(:register).once.with @api
|
27
|
-
|
27
|
+
|
28
28
|
the_source = some_source
|
29
29
|
@api.send :initialize, :some_index_name do
|
30
30
|
source the_source
|
31
31
|
end
|
32
32
|
end
|
33
33
|
end
|
34
|
-
|
34
|
+
|
35
35
|
context 'unit' do
|
36
36
|
let(:api) do
|
37
37
|
the_source = some_source
|
@@ -39,12 +39,12 @@ describe Picky::Index do
|
|
39
39
|
source the_source
|
40
40
|
end
|
41
41
|
end
|
42
|
-
|
42
|
+
|
43
43
|
describe 'geo_categories' do
|
44
44
|
it 'delegates correctly' do
|
45
45
|
api.should_receive(:ranged_category).once.with :some_lat, 0.00898312, from: :some_lat_from
|
46
46
|
api.should_receive(:ranged_category).once.with :some_lng, 0.01796624, from: :some_lng_from
|
47
|
-
|
47
|
+
|
48
48
|
api.geo_categories :some_lat, :some_lng, 1, :lat_from => :some_lat_from, :lng_from => :some_lng_from
|
49
49
|
end
|
50
50
|
end
|
@@ -82,5 +82,5 @@ describe Picky::Index do
|
|
82
82
|
end
|
83
83
|
end
|
84
84
|
end
|
85
|
-
|
85
|
+
|
86
86
|
end
|
@@ -1,17 +1,17 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe Picky::
|
3
|
+
describe Picky::Bundle do
|
4
4
|
|
5
5
|
before(:each) do
|
6
6
|
@index = Picky::Index.new :some_index
|
7
7
|
@category = Picky::Category.new :some_category, @index
|
8
|
-
|
8
|
+
|
9
9
|
@weights = Picky::Generators::Weights::Default
|
10
10
|
@partial = Picky::Generators::Partial::Default
|
11
11
|
@similarity = Picky::Generators::Similarity::DoubleMetaphone.new 3
|
12
12
|
@bundle = described_class.new :some_name, @category, Picky::Backends::Memory.new, @weights, @partial, @similarity
|
13
13
|
end
|
14
|
-
|
14
|
+
|
15
15
|
it 'is by default empty' do
|
16
16
|
@bundle.realtime_mapping.should == {}
|
17
17
|
end
|
@@ -24,12 +24,12 @@ describe Picky::Indexed::Bundle do
|
|
24
24
|
it 'is by default empty' do
|
25
25
|
@bundle.similarity.should == {}
|
26
26
|
end
|
27
|
-
|
27
|
+
|
28
28
|
describe 'combined' do
|
29
29
|
it 'works correctly' do
|
30
30
|
@bundle.add 1, :title
|
31
31
|
@bundle.add 2, :title
|
32
|
-
|
32
|
+
|
33
33
|
@bundle.realtime_mapping.should == { 1 => [:title], 2 => [:title] }
|
34
34
|
@bundle.inverted.should == { :title => [2,1] }
|
35
35
|
@bundle.weights.should == { :title => 0.6931471805599453 }
|
@@ -40,7 +40,7 @@ describe Picky::Indexed::Bundle do
|
|
40
40
|
@bundle.add 2, :title
|
41
41
|
@bundle.remove 1
|
42
42
|
@bundle.remove 2
|
43
|
-
|
43
|
+
|
44
44
|
@bundle.realtime_mapping.should == {}
|
45
45
|
@bundle.weights.should == {}
|
46
46
|
@bundle.inverted.should == {}
|
@@ -51,7 +51,7 @@ describe Picky::Indexed::Bundle do
|
|
51
51
|
@bundle.add 1, :other
|
52
52
|
@bundle.add 1, :whatever
|
53
53
|
@bundle.remove 1
|
54
|
-
|
54
|
+
|
55
55
|
@bundle.realtime_mapping.should == {}
|
56
56
|
@bundle.weights.should == {}
|
57
57
|
@bundle.inverted.should == {}
|
@@ -62,7 +62,7 @@ describe Picky::Indexed::Bundle do
|
|
62
62
|
@bundle.add 2, :thing
|
63
63
|
@bundle.add 1, :other
|
64
64
|
@bundle.remove 1
|
65
|
-
|
65
|
+
|
66
66
|
@bundle.realtime_mapping.should == { 2 => [:thing] }
|
67
67
|
@bundle.weights.should == { :thing => 0.0 }
|
68
68
|
@bundle.inverted.should == { :thing => [2] }
|
@@ -71,7 +71,7 @@ describe Picky::Indexed::Bundle do
|
|
71
71
|
it 'works correctly' do
|
72
72
|
@bundle.add 1, :title
|
73
73
|
@bundle.add 1, :title
|
74
|
-
|
74
|
+
|
75
75
|
@bundle.realtime_mapping.should == { 1 => [:title] }
|
76
76
|
@bundle.weights.should == { :title => 0.0 }
|
77
77
|
@bundle.inverted.should == { :title => [1] }
|
@@ -81,35 +81,35 @@ describe Picky::Indexed::Bundle do
|
|
81
81
|
@bundle.add 1, :title
|
82
82
|
@bundle.remove 1
|
83
83
|
@bundle.remove 1
|
84
|
-
|
84
|
+
|
85
85
|
@bundle.realtime_mapping.should == {}
|
86
86
|
@bundle.weights.should == {}
|
87
87
|
@bundle.inverted.should == {}
|
88
88
|
@bundle.similarity.should == {}
|
89
89
|
end
|
90
90
|
end
|
91
|
-
|
91
|
+
|
92
92
|
describe 'add' do
|
93
93
|
it 'works correctly' do
|
94
94
|
@bundle.add 1, :title
|
95
|
-
|
95
|
+
|
96
96
|
@bundle.realtime_mapping.should == { 1 => [:title] }
|
97
|
-
|
97
|
+
|
98
98
|
@bundle.add 2, :other
|
99
|
-
|
99
|
+
|
100
100
|
@bundle.realtime_mapping.should == { 1 => [:title], 2 => [:other] }
|
101
|
-
|
101
|
+
|
102
102
|
@bundle.add 1, :thing
|
103
|
-
|
103
|
+
|
104
104
|
@bundle.realtime_mapping.should == { 1 => [:title, :thing], 2 => [:other] }
|
105
105
|
end
|
106
106
|
it 'works correctly' do
|
107
107
|
@bundle.add 1, :title
|
108
|
-
|
108
|
+
|
109
109
|
@bundle.weights.should == { :title => 0.0 }
|
110
110
|
@bundle.inverted.should == { :title => [1] }
|
111
111
|
@bundle.similarity.should == { :TTL => [:title] }
|
112
112
|
end
|
113
113
|
end
|
114
|
-
|
114
|
+
|
115
115
|
end
|