summaryrefslogtreecommitdiff
path: root/spec/lib/gitlab/utils/merge_hash_spec.rb
blob: 72620e549a94ea9943a878b9bdb6bbd1156904eb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# frozen_string_literal: true

require 'spec_helper'
describe Gitlab::Utils::MergeHash do
  describe '.crush' do
    it 'can flatten a hash to each element' do
      input = { hello: "world", this: { crushes: ["an entire", "hash"] } }
      expected_result = [:hello, "world", :this, :crushes, "an entire", "hash"]

      expect(described_class.crush(input)).to eq(expected_result)
    end
  end

  describe '.elements' do
    it 'deep merges an array of elements' do
      input = [{ hello: ["world"] },
               { hello: "Everyone" },
               { hello: { greetings: ['Bonjour', 'Hello', 'Hallo', 'Dzień dobry'] } },
               "Goodbye", "Hallo"]
      expected_output = [
        {
          hello:
            [
              "world",
              "Everyone",
              { greetings: ['Bonjour', 'Hello', 'Hallo', 'Dzień dobry'] }
            ]
        },
        "Goodbye"
      ]

      expect(described_class.merge(input)).to eq(expected_output)
    end
  end
end