Sha256: 4de31b137a650aa33d250d831d4c80d78eafdccee31e32814444e3279b8e9500

Contents?: true

Size: 1.4 KB

Versions: 24

Compression:

Stored size: 1.4 KB

Contents

# frozen_string_literal: true

require 'eac_ruby_utils/immutable'

::RSpec.describe ::EacRubyUtils::Immutable::HashAccessor do
  let(:stub_class) do
    ::Class.new do
      include ::EacRubyUtils::Immutable

      immutable_accessor :the_hash, type: :hash
    end
  end

  let(:initial_instance) { stub_class.new }

  it { expect(initial_instance.the_hashes).to eq({}) }
  it { expect(initial_instance.the_hash('key_a')).to be_nil }

  context 'when a single value is set' do
    let(:change1_instance) { initial_instance.the_hash('key_a', 'A') }

    before { change1_instance }

    it { expect(initial_instance.the_hashes).to eq({}) }
    it { expect(initial_instance.the_hash('key_a')).to be_nil }
    it { expect(change1_instance.the_hashes).to eq({ 'key_a' => 'A' }) }
    it { expect(change1_instance.the_hash('key_a')).to eq('A') }

    context 'when all valuesare set' do
      let(:change2_instance) { initial_instance.the_hashes('key_b' => 'B') }

      before { change2_instance }

      it { expect(change1_instance.the_hashes).to eq({ 'key_a' => 'A' }) }
      it { expect(change1_instance.the_hash('key_a')).to eq('A') }
      it { expect(change1_instance.the_hash('key_b')).to be_nil }
      it { expect(change2_instance.the_hashes).to eq({ 'key_b' => 'B' }) }
      it { expect(change2_instance.the_hash('key_a')).to be_nil }
      it { expect(change2_instance.the_hash('key_b')).to eq('B') }
    end
  end
end

Version data entries

24 entries across 24 versions & 1 rubygems

Version Path
eac_tools-0.66.0 sub/eac_ruby_utils/spec/lib/eac_ruby_utils/immutable/hash_accessor_spec.rb
eac_tools-0.65.1 sub/eac_ruby_utils/spec/lib/eac_ruby_utils/immutable/hash_accessor_spec.rb
eac_tools-0.65.0 sub/eac_ruby_utils/spec/lib/eac_ruby_utils/immutable/hash_accessor_spec.rb
eac_tools-0.64.0 sub/eac_ruby_utils/spec/lib/eac_ruby_utils/immutable/hash_accessor_spec.rb
eac_tools-0.63.0 sub/eac_ruby_utils/spec/lib/eac_ruby_utils/immutable/hash_accessor_spec.rb
eac_tools-0.62.1 sub/eac_ruby_utils/spec/lib/eac_ruby_utils/immutable/hash_accessor_spec.rb
eac_tools-0.62.0 sub/eac_ruby_utils/spec/lib/eac_ruby_utils/immutable/hash_accessor_spec.rb
eac_tools-0.61.1 sub/eac_ruby_utils/spec/lib/eac_ruby_utils/immutable/hash_accessor_spec.rb
eac_tools-0.61.0 sub/eac_ruby_utils/spec/lib/eac_ruby_utils/immutable/hash_accessor_spec.rb
eac_tools-0.60.3 sub/eac_ruby_utils/spec/lib/eac_ruby_utils/immutable/hash_accessor_spec.rb
eac_tools-0.60.2 sub/eac_ruby_utils/spec/lib/eac_ruby_utils/immutable/hash_accessor_spec.rb
eac_tools-0.60.1 sub/eac_ruby_utils/spec/lib/eac_ruby_utils/immutable/hash_accessor_spec.rb
eac_tools-0.60.0 sub/eac_ruby_utils/spec/lib/eac_ruby_utils/immutable/hash_accessor_spec.rb
eac_tools-0.59.0 sub/eac_ruby_utils/spec/lib/eac_ruby_utils/immutable/hash_accessor_spec.rb
eac_tools-0.58.0 sub/eac_ruby_utils/spec/lib/eac_ruby_utils/immutable/hash_accessor_spec.rb
eac_tools-0.57.0 sub/eac_ruby_utils/spec/lib/eac_ruby_utils/immutable/hash_accessor_spec.rb
eac_tools-0.56.1 sub/eac_ruby_utils/spec/lib/eac_ruby_utils/immutable/hash_accessor_spec.rb
eac_tools-0.56.0 sub/eac_ruby_utils/spec/lib/eac_ruby_utils/immutable/hash_accessor_spec.rb
eac_tools-0.55.7 sub/eac_ruby_utils/spec/lib/eac_ruby_utils/immutable/hash_accessor_spec.rb
eac_tools-0.55.6 sub/eac_ruby_utils/spec/lib/eac_ruby_utils/immutable/hash_accessor_spec.rb