spec/integration/workplace-search/documents_spec.rb (77 lines of code) (raw):
# Licensed to Elasticsearch B.V. under one or more contributor
# license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright
# ownership. Elasticsearch B.V. licenses this file to you under
# the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
# frozen_string_literal: true
require_relative "#{__dir__}/workplace_search_helper.rb"
describe Elastic::EnterpriseSearch::WorkplaceSearch::Client do
after do
delete_content_sources
end
let(:documents) do
[
{
'id' => '4e696e74656e646f203634',
'url' => 'https://www.elastic.co/blog/introducing-quick-start-guides-getting-started-with-elastic-enterprise-search-for-free',
'title' => 'Getting started with Elastic Enterprise Search for free',
'body' => 'this is a test'
},
{
'id' => '47616d6520426f7920436f6c6f72',
'url' => 'https://www.elastic.co/workplace-search',
'title' => 'One-stop answer shop for the virtual workplace',
'body' => 'this is also a test'
}
]
end
context 'Documents' do
let(:content_source_id) do
client.create_content_source(body: { name: 'test' }).body['id']
end
it 'indexes' do
response = client.index_documents(content_source_id, documents: documents)
expect(response.status).to eq 200
end
it 'deletes' do
response = client.delete_documents(content_source_id, document_ids: documents.map { |doc| doc['id'] })
expect(response.status).to eq 200
end
end
context 'Documents in Content Sources' do
let(:content_source_id) { client.create_content_source(body: { name: 'books' }).body['id'] }
let(:document_id) { client.index_documents(content_source_id, documents: documents).body['results'].first['id'] }
it 'Gets a document in a content source' do
response = client.document(content_source_id, document_id: document_id)
expect(response.status).to eq 200
expect(response.body['id']).to eq document_id
end
it 'Deletes all documents in a content source' do
response = client.delete_all_documents(content_source_id)
expect(response.status).to eq 200
end
it 'Deletes documents by query' do
content_source_id = client.create_content_source(body: { name: 'asimov' }).body['id']
documents = [
{ title: 'Foundation', year: 1951 },
{ title: 'Foundation and Empire', year: 1952 },
{ title: 'Second Foundation', year: 1953 }
]
response = client.index_documents(content_source_id, documents: documents)
expect(response.status).to eq 200
expect(response.body['results'].count).to eq 3
# Give time to index the documents so we can delete them:
sleep 2
response = client.delete_documents_by_query(content_source_id, query: 'Foundation')
expect(response.status).to eq 200
expect(response.body).to eq({ 'total' => 3, 'deleted' => 3, 'failures' => [] })
end
it 'Lists documents' do
content_source_id = client.create_content_source(body: { name: 'quiroga' }).body['id']
documents = [
{ title: 'Stories of Love, Madness and Death', year: 1917 },
{ title: 'Drifting', year: 1937 },
{ title: 'The Beheaded Hen', year: 1925 }
]
client.index_documents(content_source_id, documents: documents)
# Give time to index the documents
sleep 2
response = client.list_documents(content_source_id)
expect(response.status).to eq 200
expect(response.body['results'].count).to eq 3
expect(response.body['results'].map { |a| a['year'] }).to eq ['1917', '1937', '1925']
end
end
end