specs for the index writer, which is responsible for writing the
documents into the index dir
This commit is contained in:
parent
b9caf75d53
commit
bd8230c4fc
|
@ -0,0 +1,23 @@
|
||||||
|
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
||||||
|
|
||||||
|
describe "IndexWriter#add" do
|
||||||
|
before :all do
|
||||||
|
@doc1 = Spec::FooDocument.new :id => 1
|
||||||
|
@doc2 = Spec::FooDocument.new :id => 2
|
||||||
|
end
|
||||||
|
|
||||||
|
before do
|
||||||
|
@path = prepare_index_dir
|
||||||
|
end
|
||||||
|
|
||||||
|
it "adds the object to the list of objects" do
|
||||||
|
w = Polecat::IndexWriter.new @path
|
||||||
|
w.add @doc1
|
||||||
|
w.count.should == 1
|
||||||
|
end
|
||||||
|
|
||||||
|
it "raises an error, when the object is not a document" do
|
||||||
|
lambda { Polecat::IndexWriter.new(@path).add "foo" }.should(
|
||||||
|
raise_error(ArgumentError))
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,18 @@
|
||||||
|
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
||||||
|
|
||||||
|
describe "IndexWriter#count" do
|
||||||
|
before :all do
|
||||||
|
@path = prepare_index_dir
|
||||||
|
end
|
||||||
|
|
||||||
|
it "returns 0 on an empty writer" do
|
||||||
|
w = Polecat::IndexWriter.new @path
|
||||||
|
w.count.should == 0
|
||||||
|
end
|
||||||
|
|
||||||
|
it "returns the number of documents stored in the storage" do
|
||||||
|
w = Polecat::IndexWriter.new @path
|
||||||
|
w.add Spec::FooDocument.new
|
||||||
|
w.count.should == 1
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,27 @@
|
||||||
|
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
||||||
|
|
||||||
|
describe "IndexWriter#new" do
|
||||||
|
before :all do
|
||||||
|
@path = prepare_index_dir
|
||||||
|
end
|
||||||
|
|
||||||
|
it "takes a path as an argument" do
|
||||||
|
writer = Polecat::IndexWriter.new @path
|
||||||
|
writer.path.should == @path
|
||||||
|
end
|
||||||
|
|
||||||
|
it "raises an Argument when no path is given" do
|
||||||
|
lambda { Polecat::IndexWriter.new }.should raise_error(ArgumentError)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "raises an error, when the path is not directory" do
|
||||||
|
lambda {
|
||||||
|
Polecat::IndexWriter.new "/dev/null"
|
||||||
|
}.should raise_error(ArgumentError)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "raises an error when a index.lock file is in the directory" do
|
||||||
|
FileUtils.touch @path + '/index.lock'
|
||||||
|
lambda { Polecat::IndexWriter.new @path }.should raise_error(IOError)
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,42 @@
|
||||||
|
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
||||||
|
|
||||||
|
describe "IndexWriter#write" do
|
||||||
|
before do
|
||||||
|
@path = prepare_index_dir
|
||||||
|
end
|
||||||
|
|
||||||
|
it "sets count to 0" do
|
||||||
|
w = Polecat::IndexWriter.new @path
|
||||||
|
w.add Spec::FooDocument.new
|
||||||
|
w.write
|
||||||
|
w.count.should == 0
|
||||||
|
end
|
||||||
|
|
||||||
|
it "returns true when the write was a success" do
|
||||||
|
w = Polecat::IndexWriter.new @path
|
||||||
|
w.add Spec::FooDocument.new
|
||||||
|
w.write.should == true
|
||||||
|
end
|
||||||
|
|
||||||
|
it "removes the lock after a write" do
|
||||||
|
w = Polecat::IndexWriter.new @path
|
||||||
|
w.add Spec::FooDocument.new
|
||||||
|
w.write
|
||||||
|
File.exists?(@path + '/index.lock').should == false
|
||||||
|
end
|
||||||
|
|
||||||
|
it "writes a marshalled representation of the document list" do
|
||||||
|
w = Polecat::IndexWriter.new @path
|
||||||
|
doc = Spec::FooDocument.new
|
||||||
|
w.add doc
|
||||||
|
w.write
|
||||||
|
File.read(@path + '/ind0.ind').should == Marshal.dump([doc])
|
||||||
|
end
|
||||||
|
|
||||||
|
it "returns false when the directory has an 'index.lock' file" do
|
||||||
|
w = Polecat::IndexWriter.new @path
|
||||||
|
FileUtils.touch @path + '/index.lock'
|
||||||
|
w.add Spec::FooDocument.new
|
||||||
|
w.write.should == false
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in New Issue