Sha256: 72eb4be703747a1466a1d2ca286e488cab3151abf5098e4b05f96413df20a7f8

Contents?: true

Size: 1.36 KB

Versions: 3

Compression:

Stored size: 1.36 KB

Contents

require 'spec_helper'
require 'elasticsearch/extensions/documents/queryable'

module Elasticsearch
  module Extensions
    module Documents
      describe Queryable do

        context 'when a subclass is not correctly implemented' do
          class InvalidQuery
            include Queryable
          end

          subject(:query) { InvalidQuery.new }

          it 'raises an error when a query is run' do
            expect { query.execute }.to raise_error NotImplementedError
          end
        end

        context 'when the query class defines a custom result format' do
          class CustomResultsQuery
            include Queryable

            def as_hash
              { query: 'foo' }
            end

            def parse_results(raw_results)
              { custom_format: raw_results }
            end
          end

          subject(:query) { CustomResultsQuery.new }

          describe '#execute' do
            it 'provides the search results in a custom format' do
              query.index.stub(:search).and_return({ foo: :bar})
              expect(query.execute).to eql({ custom_format: { foo: :bar } })
            end
          end

          describe '#index_name' do
            it 'provides the index_name from the config' do
              expect(query.index_name).to eql 'test_index'
            end
          end

        end

      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
elasticsearch-documents-1.0.0 spec/elasticsearch/extensions/documents/queryable_spec.rb
elasticsearch-documents-0.1.0 spec/elasticsearch/extensions/documents/queryable_spec.rb
elasticsearch-documents-0.0.1 spec/elasticsearch/extensions/documents/queryable_spec.rb