Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

119 lines (87 sloc) 4.105 kb
require 'test_helper'
module Tire
class IndexMappingIntegrationTest < Test::Unit::TestCase
include Test::Integration
context "Default mapping" do
teardown { Tire.index('mapped-index').delete; sleep 0.1 }
should "create and return the default mapping as a Hash" do
index = Tire.index 'mapped-index' do
create
store :type => :article, :title => 'One'
refresh
sleep 1
end
assert_equal 'string', index.mapping['article']['properties']['title']['type'], index.mapping.inspect
assert_nil index.mapping['article']['properties']['title']['boost'], index.mapping.inspect
end
end
context "Creating index with mapping" do
teardown { Tire.index('mapped-index').delete; sleep 0.1 }
should "create the specified mapping" do
index = Tire.index 'mapped-index' do
create mappings: {
article: {
_all: { enabled: false },
properties: {
title: { type: 'string', boost: 2.0, store: 'yes' }
}
}
}
end
# p index.mapping
assert_equal false, index.mapping['article']['_all']['enabled'], index.mapping.inspect
assert_equal 2.0, index.mapping['article']['properties']['title']['boost'], index.mapping.inspect
end
end
context "Update mapping" do
setup { Tire.index("mapped-index").create; sleep 1 }
teardown { Tire.index("mapped-index").delete; sleep 0.1 }
should "update the mapping for type" do
index = Tire.index("mapped-index")
index.mapping "article", :properties => { :body => { :type => "string" } }
assert_equal({ "type" => "string" }, index.mapping["article"]["properties"]["body"])
assert index.mapping("article", :properties => { :title => { :type => "string" } })
mapping = index.mapping
# Verify return value
assert mapping, index.response.inspect
# Verify response
assert_equal( { "type" => "string" }, mapping["article"]["properties"]["body"] )
assert_equal( { "type" => "string" }, mapping["article"]["properties"]["title"] )
end
should "fail to update the mapping in an incompatible way" do
index = Tire.index("mapped-index")
# 1. Update initial index mapping
assert index.mapping "article", properties: { body: { type: "string" } }
assert_equal( { "type" => "string" }, index.mapping["article"]["properties"]["body"] )
# 2. Attempt to update the mapping in incompatible way (change property type)
mapping = index.mapping "article", :properties => { :body => { :type => "integer" } }
# Verify return value
assert !mapping, index.response.inspect
#
# Verify response
assert_match /MergeMappingException/, index.response.body
end
should "honor the `ignore_conflicts` option" do
index = Tire.index("mapped-index")
# 1. Update initial index mapping
assert index.mapping "article", properties: { body: { type: "string" } }
assert_equal( { "type" => "string" }, index.mapping["article"]["properties"]["body"] )
# 2. Attempt to update the mapping in incompatible way and ignore conflicts
mapping = index.mapping "article", ignore_conflicts: true, properties: { body: { type: "integer" } }
# Verify return value (true since we ignore conflicts)
assert mapping, index.response.inspect
end
end
context "Delete mapping" do
setup { Tire.index("mapped-index").create; sleep 1 }
teardown { Tire.index("mapped-index").delete; sleep 0.1 }
should "delete the mapping for type" do
index = Tire.index("mapped-index")
# 1. Update initial index mapping
assert index.mapping 'article', properties: { body: { type: "string" } }
assert index.delete_mapping 'article'
assert index.mapping.empty?, index.response.inspect
end
end
end
end
Jump to Line
Something went wrong with that request. Please try again.