Sha256: 7aad298cb5bc87b2b44e6b52a71d75a2a71ccd57c4f3d75efebb201080918172

Contents?: true

Size: 1.13 KB

Versions: 4

Compression:

Stored size: 1.13 KB

Contents

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.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

4 entries across 4 versions & 1 rubygems

Version Path
pups-1.0.3 test/merge_command_test.rb
pups-1.0.2 test/merge_command_test.rb
pups-1.0.1 test/merge_command_test.rb
pups-1.0.0 test/merge_command_test.rb