Sha256: d30760b0f684e4b03056323bf3bf6223eec11175b69ecc316c80e29a5a92c8c5

Contents?: true

Size: 1.71 KB

Versions: 19

Compression:

Stored size: 1.71 KB

Contents

shared_examples_for GroupDocs::Extensions::Lookup do
  before(:each) do
    # make sure `name` attribute exists
    described_class.class_eval('attr_accessor :name')
  end

  let(:found) do
    if described_class == GroupDocs::Document
      described_class.new(id: 1, file: GroupDocs::Storage::File.new)
    else
      described_class.new(id: 1)
    end
  end

  describe '.find!' do
    it 'calls #find_all! and return its first result' do
      described_class.should_receive(:find_all!).with(:id, 1, {}).and_return([found])
      described_class.find!(:id, 1).should == found
    end
  end

  describe '.find_all!' do
    before(:each) do
      folder1 = stub(list!: [], id: 1, name: 'Test')
      folder2 = stub(list!: [folder1], id: 2, name: 'Test2')
      described_class.stub(all!: [folder1, folder2])
    end

    it 'raises error if class does not implement #all!' do
      described_class.stub(:respond_to?).with(:all!).and_return(false)
      lambda do
        described_class.find_all!(:id, 1)
      end.should raise_error(NoMethodError, "#{described_class}.all! is not implemented - aborting.")
    end

    it 'allows passing attribute and its value' do
      -> { described_class.find_all!(:id, 1) }.should_not raise_error(ArgumentError)
    end

    it 'calls #all! and search within it' do
      described_class.should_receive(:all!).and_return([found])
      described_class.find_all!(:name, 'Test')
    end

    it 'returns an array' do
      described_class.find_all!(:id, 1).should be_an(Array)
    end

    it 'finds by exact match' do
      described_class.find_all!(:name, 'Test').length.should == 1
    end

    it 'finds by regexp match' do
      described_class.find_all!(:name, /Test/).length.should == 2
    end
  end
end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
groupdocs-0.3.11 spec/support/shared_examples/extensions/lookup.rb
groupdocs-0.3.10 spec/support/shared_examples/extensions/lookup.rb
groupdocs-0.3.9 spec/support/shared_examples/extensions/lookup.rb
groupdocs-0.3.8 spec/support/shared_examples/extensions/lookup.rb
groupdocs-0.3.7 spec/support/shared_examples/extensions/lookup.rb
groupdocs-0.3.6 spec/support/shared_examples/extensions/lookup.rb
groupdocs-0.3.5 spec/support/shared_examples/extensions/lookup.rb
groupdocs-0.3.0 spec/support/shared_examples/extensions/lookup.rb
groupdocs-0.2.11 spec/support/shared_examples/extensions/lookup.rb
groupdocs-0.2.10 spec/support/shared_examples/extensions/lookup.rb
groupdocs-0.2.9 spec/support/shared_examples/extensions/lookup.rb
groupdocs-0.2.8 spec/support/shared_examples/extensions/lookup.rb
groupdocs-0.2.7 spec/support/shared_examples/extensions/lookup.rb
groupdocs-0.2.6 spec/support/shared_examples/extensions/lookup.rb
groupdocs-0.2.5 spec/support/shared_examples/extensions/lookup.rb
groupdocs-0.2.4 spec/support/shared_examples/extensions/lookup.rb
groupdocs-0.2.3 spec/support/shared_examples/extensions/lookup.rb
groupdocs-0.2.2 spec/support/shared_examples/extensions/lookup.rb
groupdocs-0.2.1 spec/support/shared_examples/extensions/lookup.rb