Sha256: 95a3d9f2a2868a9c6841854413ce59101990963c70149521a2c355f7fdd81eea

Contents?: true

Size: 1.04 KB

Versions: 5

Compression:

Stored size: 1.04 KB

Contents

require 'spec_helper'

class Tester
  using EnsureIt if ENSURE_IT_REFINED

  def ensure_hash(*args)
    obj.ensure_hash(*args)
  end

  def ensure_hash!(*args)
    obj.ensure_hash!(*args)
  end
end

describe EnsureIt do
  shared_examples 'hash parser' do
    it 'and returns self for array' do
      obj = {some: 0, 'key' => 1}
      expect(call_for(obj)).to eq obj
    end

    it 'symbolizes keys with symbolize_keys option' do
      obj = {some: 0, 'key' => 1, Object => 'strange'}
      expect(call_for(obj, symbolize_keys: true)).to eq(some: 0, key: 1)
    end
  end

  describe '#ensure_hash' do
    it_behaves_like 'hash parser'
    it_behaves_like 'empty hash creator for unmet objects', except: Hash

    it 'and returns nil with default: nil option' do
      expect(call_for(true, default: nil)).to be_nil
      expect(call_for(true, default: 1)).to eq 1
    end
  end

  describe '#ensure_hash!' do
    it_behaves_like 'hash parser'
    it_behaves_like(
      'banger for unmet objects', except: Hash,
      message: /should be a Hash/
    )
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
ensure_it-1.0.0 spec/lib/ensure_hash_spec.rb
ensure_it-0.1.5 spec/lib/ensure_hash_spec.rb
ensure_it-0.1.4 spec/lib/ensure_hash_spec.rb
ensure_it-0.1.3 spec/lib/ensure_hash_spec.rb
ensure_it-0.1.2 spec/lib/ensure_hash_spec.rb