# frozen_string_literal: true require 'spec_helper' require 'image_optim/hash_helpers' describe ImageOptim::HashHelpers do before do stub_const('HashHelpers', ImageOptim::HashHelpers) end context 'stringify/simbolyze' do symbol_keys = { :a => 1, :b => { :c => [:a, 'a'], :d => {}, }, } string_keys = { 'a' => 1, 'b' => { 'c' => [:a, 'a'], 'd' => {}, }, } it 'deep stringifies hash keys' do expect(HashHelpers.deep_stringify_keys(symbol_keys)).to eq(string_keys) expect(HashHelpers.deep_stringify_keys(string_keys)).to eq(string_keys) end it 'deep symbolises hash keys' do expect(HashHelpers.deep_symbolise_keys(string_keys)).to eq(symbol_keys) expect(HashHelpers.deep_symbolise_keys(symbol_keys)).to eq(symbol_keys) end end it 'deep merges hashes' do merge_a = { :a => { :b => 1, :c => { :d => 2, :e => {:f => true}, }, }, :y => 10, } merge_b = { :a => { :b => 2, :c => { :d => 3, :e => false, }, }, 'z' => 20, } merge_result = { :a => { :b => 2, :c => { :d => 3, :e => false, }, }, :y => 10, 'z' => 20, } expect(HashHelpers.deep_merge(merge_a, merge_b)).to eq(merge_result) end end