Thursday, June 04, 2026 1:52:14 AM
> test_compact_blank_merge_active_support.rb
# frozen_string_literal: true

require "test_helper"

class TestHashCompactBlankMerge < Minitest::Test
  def setup
    fail "Active support must be defined for this test" unless defined?(ActiveSupport)

    @hash = {name: "Alice", role: "admin"}
  end

  def test_it_merges_only_present_values
    input = {
      bio: "",                  # blank string - excluded
      tags: [],                 # empty array - excluded
      email: "[email protected]",   # present - included
      phone: nil,               # nil - excluded
      active: true,             # present - included
      score: 0                  # present (0 is not blank) - included
    }

    result = @hash.compact_blank_merge(input)

    assert_equal(
      {
        name: "Alice",
        role: "admin",
        email: "[email protected]",
        active: true,
        score: 0
      },
      result
    )
  end

  def test_it_merges_only_present_values_in_place
    input = {
      bio: "",                  # blank string - excluded
      tags: [],                 # empty array - excluded
      email: "[email protected]",   # present - included
      phone: nil,               # nil - excluded
      active: true              # present - included
    }

    @hash.compact_blank_merge!(input)

    assert_equal(
      {
        name: "Alice",
        role: "admin",
        email: "[email protected]",
        active: true
      },
      @hash
    )
  end

  def test_it_works_with_kwargs
    result = @hash.compact_blank_merge(
      bio: "",
      email: "[email protected]",
      tags: []
    )

    assert_equal(
      {
        name: "Alice",
        role: "admin",
        email: "[email protected]"
      },
      result
    )
  end

  def test_it_handles_empty_hash_merge
    result = @hash.compact_blank_merge({})
    assert_equal(@hash, result)
    refute_same(@hash, result)
  end

  def test_it_handles_all_blank_values
    result = @hash.compact_blank_merge(
      empty_string: "",
      empty_array: [],
      nil_value: nil,
      whitespace: "   "
    )

    assert_equal(@hash, result)
  end
end
All opinions represented herein are my own
- © 2024 - 2026 itsthedevman
- build 4294fb2