elasticsearch-api/spec/unit/actions/hashie_spec.rb (70 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. require 'spec_helper' require 'hashie' require 'hashie/logger' Hashie.logger = Logger.new(nil) describe 'Hashie' do let(:json) do <<-JSON { "took": 14, "timed_out": false, "_shards": { "total": 1, "successful": 1, "failed": 0 }, "hits": { "total": 5, "max_score": 0.51104903, "hits": [ { "_index": "myindex", "_type": "mytype", "_id": "1", "_score": 0.51104903, "_source": { "title": "Test 1", "tags": [ "y", "z" ], "published": true, "published_at": "2013-06-22T21:13:00Z", "counter": 1 } } ] }, "facets": { "tags": { "_type": "terms", "missing": 0, "total": 10, "other": 0, "terms": [ { "term": "z", "count": 4 }, { "term": "y", "count": 3 }, { "term": "x", "count": 3 } ] } } } JSON end let(:response) do Hashie::Mash.new(MultiJson.load(json)) end it 'wraps the response' do expect(response.hits.hits.first._source.title).to eq('Test 1') expect(response.facets.tags.terms.first.term).to eq('z') end end