50 lines
1.2 KiB
Ruby
50 lines
1.2 KiB
Ruby
|
require 'spec_helper'
|
||
|
|
||
|
describe Elasticsearch::Model::Searching::ClassMethods do
|
||
|
|
||
|
before(:all) do
|
||
|
class ::DummySearchingModel
|
||
|
extend Elasticsearch::Model::Searching::ClassMethods
|
||
|
|
||
|
def self.index_name; 'foo'; end
|
||
|
def self.document_type; 'bar'; end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
after(:all) do
|
||
|
remove_classes(DummySearchingModel)
|
||
|
end
|
||
|
|
||
|
it 'has the search method' do
|
||
|
expect(DummySearchingModel).to respond_to(:search)
|
||
|
end
|
||
|
|
||
|
describe '#search' do
|
||
|
|
||
|
let(:response) do
|
||
|
double('search', execute!: { 'hits' => {'hits' => [ {'_id' => 2 }, {'_id' => 1 } ]} })
|
||
|
end
|
||
|
|
||
|
before do
|
||
|
expect(Elasticsearch::Model::Searching::SearchRequest).to receive(:new).with(DummySearchingModel, 'foo', { default_operator: 'AND' }).and_return(response)
|
||
|
end
|
||
|
|
||
|
it 'creates a search object' do
|
||
|
expect(DummySearchingModel.search('foo', default_operator: 'AND')).to be_a(Elasticsearch::Model::Response::Response)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
describe 'lazy execution' do
|
||
|
|
||
|
let(:response) do
|
||
|
double('search').tap do |r|
|
||
|
expect(r).to receive(:execute!).never
|
||
|
end
|
||
|
end
|
||
|
|
||
|
it 'does not execute the search until the results are accessed' do
|
||
|
DummySearchingModel.search('foo')
|
||
|
end
|
||
|
end
|
||
|
end
|