Thursday, June 04, 2026 1:53:36 AM
> test_transform_values_with_key.rb
# frozen_string_literal: true

require "test_helper"

class TestHashTransformValuesWithKey < Minitest::Test
  def setup
    @hash = {key_1: 1, key_2: 2}
  end

  # Checking that original functionality still works
  def test_og_transform_values
    result = @hash.transform_values { |v| v * 0 }
    assert_equal({key_1: 0, key_2: 0}, result)
  end

  # Checking that original functionality still works
  def test_og_transform_values!
    @hash.transform_values! { |v| v * 0 }
    assert_equal({key_1: 0, key_2: 0}, @hash)
  end

  def test_it_returns_new_hash
    result = @hash.transform_values(with_key: true) { |v, k| "#{k}#{v}" }

    assert_equal({key_1: "key_11", key_2: "key_22"}, result)
  end

  def test_it_modifies_in_memory
    @hash.transform_values!(with_key: true) { |v, k| "#{k}#{v}" }

    assert_equal({key_1: "key_11", key_2: "key_22"}, @hash)
  end

  def test_it_returns_enum
    enum = @hash.transform_values(with_key: true)
    transformed = enum.map { |v, k| "#{k}:#{v}" }

    assert_equal(["key_1:1", "key_2:2"], transformed)
  end

  def test_it_returns_enum_for_bang
    enum = @hash.transform_values!(with_key: true)
    transformed = enum.map { |v, k| "#{k}:#{v}" }

    assert_equal(["key_1:1", "key_2:2"], transformed)
  end
end
All opinions represented herein are my own
- © 2024 - 2026 itsthedevman
- build 4294fb2