diff options
-rw-r--r-- | lib/acts_as_xapian/acts_as_xapian.rb | 5 | ||||
-rw-r--r-- | spec/lib/acts_as_xapian_spec.rb | 29 |
2 files changed, 33 insertions, 1 deletions
diff --git a/lib/acts_as_xapian/acts_as_xapian.rb b/lib/acts_as_xapian/acts_as_xapian.rb index 6520a20a4..48d0b0554 100644 --- a/lib/acts_as_xapian/acts_as_xapian.rb +++ b/lib/acts_as_xapian/acts_as_xapian.rb @@ -375,7 +375,10 @@ module ActsAsXapian if correction.empty? return nil end - return correction + if correction.respond_to?(:force_encoding) + correction = correction.force_encoding('UTF-8') + end + correction end # Return array of models found diff --git a/spec/lib/acts_as_xapian_spec.rb b/spec/lib/acts_as_xapian_spec.rb index 24ca47452..d411bf856 100644 --- a/spec/lib/acts_as_xapian_spec.rb +++ b/spec/lib/acts_as_xapian_spec.rb @@ -72,4 +72,33 @@ describe ActsAsXapian::Search do end end + describe :spelling_correction do + + before :all do + @alice = FactoryGirl.create(:public_body, :name => 'alice') + @bob = FactoryGirl.create(:public_body, :name => 'bôbby') + ActsAsXapian.update_index + end + + it 'returns a UTF-8 encoded string' do + s = ActsAsXapian::Search.new([PublicBody], "alece", :limit => 100) + s.spelling_correction.should == "alice" + if s.spelling_correction.respond_to? :encoding + s.spelling_correction.encoding.to_s.should == 'UTF-8' + end + end + + it 'handles non-ASCII characters' do + s = ActsAsXapian::Search.new([PublicBody], "bobby", :limit => 100) + s.spelling_correction.should == "bôbby" + end + + after :all do + @alice.destroy + @bob.destroy + ActsAsXapian.update_index + end + + end + end
\ No newline at end of file |