Skip to content
Fetching contributors…
Cannot retrieve contributors at this time
200 lines (148 sloc) 4.95 KB
# encoding: utf-8
#
require 'spec_helper'
describe "Realtime Indexing" do
class Book
attr_reader :id, :title, :author
def initialize id, title, author
@id, @title, @author = id, title, author
end
end
let(:index) do
Picky::Index.new(:test) do
source []
category :title
category :author, similarity: Picky::Generators::Similarity::DoubleMetaphone.new(3)
end
end
let(:books) { Picky::Search.new index }
before(:each) do
index.add Book.new(1, "Title", "Author")
end
context 'with partial' do
it 'finds the first entry' do
books.search('Titl').ids.should == [1]
end
it 'allows removing something' do
index.remove 1
end
it 'is not findable anymore after removing' do
books.search('Titl').ids.should == [1]
index.remove 1
books.search('Titl').ids.should == []
end
it 'allows adding something' do
index.add Book.new(2, "Title2", "Author2")
end
it 'is findable after adding' do
books.search('Titl').ids.should == [1]
index.add Book.new(2, "Title New", "Author New")
books.search('Titl').ids.should == [2,1]
end
it 'allows replacing something' do
index.replace Book.new(1, "Title New", "Author New")
end
it 'is findable after replacing' do
books.search('Ne').ids.should == []
index.replace Book.new(1, "Title New", "Author New")
books.search('Ne').ids.should == [1, 1]
end
it 'handles more complex cases' do
books.search('Ne').ids.should == []
index.replace Book.new(1, "Title New", "Author New")
books.search('title:Ne').ids.should == [1]
end
it 'handles more complex cases' do
index.remove 1
books.search('Titl').ids.should == []
index.replace Book.new(1, "Title New", "Author New")
books.search('title:Ne').ids.should == [1]
end
end
context 'non-partial' do
it 'finds the first entry' do
books.search('Titl').ids.should == [1]
end
it 'allows removing something' do
index.remove 1
end
it 'is not findable anymore after removing' do
books.search('Titl').ids.should == [1]
index.remove 1
books.search('Titl').ids.should == []
end
it 'allows adding something' do
index.add Book.new(2, "Title2", "Author2")
end
it 'is findable after adding' do
books.search('Titl').ids.should == [1]
index.add Book.new(2, "Title New", "Author New")
books.search('Titl').ids.should == [2,1]
end
it 'allows replacing something' do
index.replace Book.new(1, "Title New", "Author New")
end
it 'is findable after replacing' do
books.search('Ne').ids.should == []
index.replace Book.new(1, "Title New", "Author New")
books.search('Ne').ids.should == [1, 1]
end
it 'handles more complex cases' do
books.search('Ne').ids.should == []
index.replace Book.new(1, "Title New", "Author New")
books.search('title:Ne').ids.should == [1]
end
it 'handles more complex cases' do
index.remove 1
books.search('Titl').ids.should == []
index.replace Book.new(1, "Title New", "Author New")
books.search('title:Ne').ids.should == [1]
end
end
context 'similarity' do
it 'finds the first entry' do
books.search('Authr~').ids.should == [1]
end
it 'allows removing something' do
index.remove 1
end
it 'is not findable anymore after removing' do
books.search('Authr~').ids.should == [1]
index.remove 1
books.search('Authr~').ids.should == []
end
it 'allows adding something' do
index.add Book.new(2, "Title2", "Author2")
end
it 'is findable after adding' do
books.search('Authr~').ids.should == [1]
index.add Book.new(2, "Title New", "Author New")
books.search('Authr~').ids.should == [2,1]
end
it 'allows replacing something' do
index.replace Book.new(1, "Title New", "Author New")
end
it 'is findable after replacing' do
books.search('Nuw~').ids.should == []
index.replace Book.new(1, "Title New", "Author New")
books.search('Nuw~').ids.should == [1, 1] # TODO FIXME Not really what I'd expect.
end
it 'handles more complex cases' do
books.search('Now~').ids.should == []
index.replace Book.new(1, "Title New", "Author New")
books.search('author:Now~').ids.should == [1]
end
it 'handles more complex cases' do
index.remove 1
books.search('Athr~').ids.should == []
index.replace Book.new(1, "Title New", "Author New")
books.search('author:Athr~').ids.should == [1]
end
it 'handles more complex cases' do
books.search('Athr~').ids.should == [1]
index.replace Book.new(2, "Title New", "Author New")
index.add Book.new(3, "TTL", "AUTHR")
books.search('author:Athr~').ids.should == [2, 1, 3] # TODO Is that what I'd expect?
end
end
end
Jump to Line
Something went wrong with that request. Please try again.