spec/lib/indexing/indexes_spec.rb in picky-1.4.1 vs spec/lib/indexing/indexes_spec.rb in picky-1.4.2

- old
+ new

@@ -1,36 +1,106 @@ require 'spec_helper' describe Indexing::Indexes do - - before(:each) do - @indexes = Indexing::Indexes.new + + context 'after initialize' do + let(:indexes) { described_class.new } + it 'has no indexes' do + indexes.indexes.should == [] + end end - describe 'indexes' do - it 'exists' do - lambda { @indexes.indexes }.should_not raise_error + describe 'methods' do + let(:indexes) { described_class.new } + before(:each) do + @index1 = stub :index1, :name => :index1 + @index2 = stub :index2, :name => :index2 + indexes.register @index1 + indexes.register @index2 end - it 'is empty by default' do - @indexes.indexes.should be_empty + describe 'generate_index_only' do + context 'with index:category found' do + before(:each) do + indexes.should_receive(:find).once.with(:index, :category).and_return @index1 + end + it 'indexes' do + @index1.should_receive(:index).once.with + + indexes.generate_index_only :index, :category + end + end + context 'with index not found' do + before(:each) do + indexes.should_receive(:find).once.with(:index, :category).and_return nil + end + it 'indexes' do + @index1.should_receive(:index).never + + indexes.generate_index_only :index, :category + end + end end - end - - describe 'clear' do - it 'clears the indexes' do - @indexes.register :some_index - - @indexes.clear - - @indexes.indexes.should == [] + describe 'generate_cache_only' do + context 'with index:category found' do + before(:each) do + indexes.should_receive(:find).once.with(:index, :category).and_return @index1 + end + it 'indexes' do + @index1.should_receive(:index).once.with + + indexes.generate_index_only :index, :category + end + end + context 'with index not found' do + before(:each) do + indexes.should_receive(:find).once.with(:index, :category).and_return nil + end + it 'indexes' do + @index1.should_receive(:index).never + + indexes.generate_index_only :index, :category + end + end end - end - - describe 'register' do - it 'adds the given index to the indexes' do - @indexes.register :some_index - - @indexes.indexes.should == [:some_index] + describe 'index_for_tests' do + it 'takes a snapshot, then indexes and caches each' do + indexes.should_receive(:take_snapshot).once.with.ordered + @index1.should_receive(:index).once.with.ordered + @index1.should_receive(:cache).once.with.ordered + @index2.should_receive(:index).once.with.ordered + @index2.should_receive(:cache).once.with.ordered + + indexes.index_for_tests + end end + describe 'register' do + it 'should have indexes' do + indexes.indexes.should == [@index1, @index2] + end + end + describe 'clear' do + it 'clears the indexes' do + indexes.clear + + indexes.indexes.should == [] + end + end + def self.it_delegates_each name + describe name do + it 'calls load_from_cache on each in order' do + @index1.should_receive(name).once.with.ordered + @index2.should_receive(name).once.with.ordered + + indexes.send name + end + end + end + it_delegates_each :take_snapshot + it_delegates_each :generate_caches + it_delegates_each :backup_caches + it_delegates_each :restore_caches + it_delegates_each :check_caches + it_delegates_each :clear_caches + it_delegates_each :create_directory_structure end end \ No newline at end of file