-
Notifications
You must be signed in to change notification settings - Fork 49
/
similarity_spec.rb
59 lines (57 loc) · 1.97 KB
/
similarity_spec.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
require 'spec_helper'
describe Picky::Generators::Similarity do
let(:similarity) { described_class } # "class", actually a module.
context 'encode' do
context 'with nil' do
it 'returns the default' do
similarity.from(nil).should == Picky::Similarity::Default
end
end
context 'with a similarity object' do
let(:similarizer) do
Class.new do
def encode text
:encoded
end
def prioritize ary, encoded
end
end.new
end
it 'returns the encoded string' do
similarity.from(similarizer).encode('whatevs').should == :encoded
end
end
context 'invalid weight' do
it 'raises with a nice error message' do
expect {
similarity.from Object.new
}.to raise_error(<<-ERROR)
Similarity options should be either
* for example a Similarity::Soundex.new(n), Similarity::Metaphone.new(n), Similarity::DoubleMetaphone.new(n) etc.
or
* an object that responds to #encode(text) => encoded_text and #prioritize(array_of_encoded, encoded)
ERROR
end
it 'raises with a nice error message' do
expect {
similarity.from Object.new, 'some_index'
}.to raise_error(<<-ERROR)
Similarity options for some_index should be either
* for example a Similarity::Soundex.new(n), Similarity::Metaphone.new(n), Similarity::DoubleMetaphone.new(n) etc.
or
* an object that responds to #encode(text) => encoded_text and #prioritize(array_of_encoded, encoded)
ERROR
end
it 'raises with a nice error message' do
expect {
similarity.from Object.new, 'some_index', 'some_category'
}.to raise_error(<<-ERROR)
Similarity options for some_index:some_category should be either
* for example a Similarity::Soundex.new(n), Similarity::Metaphone.new(n), Similarity::DoubleMetaphone.new(n) etc.
or
* an object that responds to #encode(text) => encoded_text and #prioritize(array_of_encoded, encoded)
ERROR
end
end
end
end