Sha256: 41264f9f994a21d4a409c4c5d792a88b0d8a783dec035c999fd58c44de91eb8b

Contents?: true

Size: 1.03 KB

Versions: 17

Compression:

Stored size: 1.03 KB

Contents

# frozen_string_literal: true

describe 'Hash#__nanoc_symbolize_keys_recursively' do
  it 'should convert keys to symbols' do
    hash_old = { 'foo' => 'bar' }
    hash_new = { foo: 'bar' }
    expect(hash_old.__nanoc_symbolize_keys_recursively).to eql(hash_new)
  end

  it 'should not require string keys' do
    hash_old = { Time.now => 'abc' }
    hash_new = hash_old
    expect(hash_old.__nanoc_symbolize_keys_recursively).to eql(hash_new)
  end
end

describe 'Hash#__nanoc_freeze_recursively' do
  it 'should prevent first-level elements from being modified' do
    hash = { a: { b: :c } }
    hash.__nanoc_freeze_recursively

    expect { hash[:a] = 123 }.to raise_frozen_error
  end

  it 'should prevent second-level elements from being modified' do
    hash = { a: { b: :c } }
    hash.__nanoc_freeze_recursively

    expect { hash[:a][:b] = 123 }.to raise_frozen_error
  end

  it 'should not freeze infinitely' do
    a = {}
    a[:x] = a

    a.__nanoc_freeze_recursively

    expect(a).to be_frozen
    expect(a[0]).to be_frozen
  end
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
nanoc-4.8.12 spec/nanoc/base/core_ext/hash_spec.rb
nanoc-4.8.11 spec/nanoc/base/core_ext/hash_spec.rb
nanoc-4.8.10 spec/nanoc/base/core_ext/hash_spec.rb
nanoc-4.8.9 spec/nanoc/base/core_ext/hash_spec.rb
nanoc-4.8.8 spec/nanoc/base/core_ext/hash_spec.rb
nanoc-4.8.7 spec/nanoc/base/core_ext/hash_spec.rb
nanoc-4.8.6 spec/nanoc/base/core_ext/hash_spec.rb
nanoc-4.8.5 spec/nanoc/base/core_ext/hash_spec.rb
nanoc-4.8.4 spec/nanoc/base/core_ext/hash_spec.rb
nanoc-4.8.3 spec/nanoc/base/core_ext/hash_spec.rb
nanoc-4.8.2 spec/nanoc/base/core_ext/hash_spec.rb
nanoc-4.8.1 spec/nanoc/base/core_ext/hash_spec.rb
nanoc-4.8.0 spec/nanoc/base/core_ext/hash_spec.rb
nanoc-4.7.14 spec/nanoc/base/core_ext/hash_spec.rb
nanoc-4.7.13 spec/nanoc/base/core_ext/hash_spec.rb
nanoc-4.7.12 spec/nanoc/base/core_ext/hash_spec.rb
nanoc-4.7.11 spec/nanoc/base/core_ext/hash_spec.rb