Sha256: 2a4469d152bbabbcc23e0e464f8c1bc8931f2ebe78f03ac8dd1d57d51e5192e7

Contents?: true

Size: 1.31 KB

Versions: 2

Compression:

Stored size: 1.31 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.1.1 test/merge_command_test.rb
pups-1.1.0 test/merge_command_test.rb