Sha256: 02e30e938107cd340517cc5115c77e7af5af4e15ef2fe91fc3eab4866e62d246

Contents?: true

Size: 1.3 KB

Versions: 2

Compression:

Stored size: 1.3 KB

Contents

# frozen_string_literal: true

require "test_helper"
require "tempfile"

module Pups
  class MergeCommandTest < ::Minitest::Test
    def test_deep_merge_arrays
      a = { a: { a: ["hi", 1] } }
      b = { a: { a: ["hi", 2] } }
      c = { a: {} }

      d = Pups::MergeCommand.deep_merge(a, b, :merge_arrays)
      d = Pups::MergeCommand.deep_merge(d, c, :merge_arrays)

      assert_equal(["hi", 1, "hi", 2], d[:a][:a])
    end

    def test_merges
      source = <<~YAML
        user:
          name: "bob"
          password: "xyz"
      YAML

      f = Tempfile.new("test")
      f.write source
      f.close

      merge = <<~YAML
        user:
          name: "bob2"
      YAML

      MergeCommand.from_str(
        "#{f.path} $yaml",
        { "yaml" => YAML.safe_load(merge) }
      ).run

      changed = YAML.load_file(f.path)

      assert_equal(
        { "user" => { "name" => "bob2", "password" => "xyz" } },
        changed
      )

      def test_deep_merge_nil
        a = { param: { venison: "yes please" } }
        b = { param: nil }

        r1 = Pups::MergeCommand.deep_merge(a, b)
        r2 = Pups::MergeCommand.deep_merge(b, a)

        assert_equal({ venison: "yes please" }, r1[:param])
        assert_equal({ venison: "yes please" }, r2[:param])
      end
    ensure
      f.unlink
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
pups-1.2.1 test/merge_command_test.rb
pups-1.2.0 test/merge_command_test.rb