Sha256: 7c411f64a256313886c0bab86b83f65dffb54d9b4acf61546abb643910d9b965

Contents?: true

Size: 886 Bytes

Versions: 4

Compression:

Stored size: 886 Bytes

Contents

require_relative "../test_helper"

describe HashDelegate do
  class DummyClass < Struct.new(:data)
    extend HashDelegate
    hash_delegate :size, :color, to: :data
  end

  it "adds the getters to the delegated keys" do
    object = DummyClass.new color: "blue", size: "sm"

    assert_equal object.color, "blue"
    assert_equal object.size, "sm"
  end

  it "returns nil for if the delegated key is not set" do
    object = DummyClass.new

    assert_equal object.color, nil
    assert_equal object.size, nil
  end

  it "allow to set a value through delegation" do
    object = DummyClass.new
    object.color = "green"
    object.size = "lg"

    assert_equal object.color, "green"
    assert_equal object.size, "lg"
  end

  it "does not add getters to keys that where not delegated" do
    object = DummyClass.new name: "projects"

    refute_respond_to object, :name
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
hash_delegate-0.0.5 test/lib/hash_delegate_test.rb
hash_delegate-0.0.4 test/lib/hash_delegate_test.rb
hash_delegate-0.0.2 test/lib/hash_delegate_test.rb
hash_delegate-0.0.1 test/lib/hash_delegate_test.rb