From 8f6f51d16245d5d0c1d495e975627742aeeadc00 Mon Sep 17 00:00:00 2001 From: Matt Kirk Date: Tue, 30 Jul 2013 17:30:05 -0700 Subject: [PATCH] Fixing settings failure problem where there is no index --- lib/tire/index.rb | 2 +- test/unit/index_test.rb | 11 ++++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/lib/tire/index.rb b/lib/tire/index.rb index fe16dfe6..94ee3358 100644 --- a/lib/tire/index.rb +++ b/lib/tire/index.rb @@ -116,7 +116,7 @@ def delete_mapping(type) def settings @response = Configuration.client.get("#{url}/_settings") - MultiJson.decode(@response.body)[@name]['settings'] + MultiJson.decode(@response.body).fetch(@name, {}).fetch('settings', {}) end def store(*args) diff --git a/test/unit/index_test.rb b/test/unit/index_test.rb index 355ea31f..d1479de8 100644 --- a/test/unit/index_test.rb +++ b/test/unit/index_test.rb @@ -237,7 +237,16 @@ class IndexTest < Test::Unit::TestCase assert_equal '20', @index.settings['index.number_of_shards'] end - + + should "return a blank hash for settings if the index is missing" do + json = <<-JSON + {"error":"IndexMissingException[[foo] missing]","status":404} + JSON + + Configuration.client.stubs(:get).returns(mock_response(json, 404)) + + assert_equal ({}), Tire.index('foo').settings + end end context "when storing" do