spec/planter/hash_spec.rb in planter-cli-0.0.4 vs spec/planter/hash_spec.rb in planter-cli-3.0.1

- old
+ new

@@ -78,6 +78,33 @@ hash = { a: 1, b: { c: 2 } }.deep_freeze.deep_thaw expect(hash).not_to be_frozen expect(hash[:b]).not_to be_frozen end end + + describe '#stringify_keys!' do + let(:hash) { { key1: 'value1', key2: 'value2', key3: { key4: 'value4' } } } + + it 'converts symbol keys to strings destructively' do + hash.stringify_keys! + expect(hash).to eq({ 'key1' => 'value1', 'key2' => 'value2', 'key3' => { 'key4' => 'value4' } }) + end + + it 'does not modify the original hash if already string keys' do + string_hash = { 'key1' => 'value1', 'key2' => 'value2', 'key3' => { 'key4' => 'value4' } } + string_hash.stringify_keys! + expect(string_hash).to eq({ 'key1' => 'value1', 'key2' => 'value2', 'key3' => { 'key4' => 'value4' } }) + end + + it 'handles nested hashes' do + nested_hash = { key1: { key2: { key3: 'value3' } } } + nested_hash.stringify_keys! + expect(nested_hash).to eq({ 'key1' => { 'key2' => { 'key3' => 'value3' } } }) + end + + it 'handles empty hashes' do + empty_hash = {} + empty_hash.stringify_keys! + expect(empty_hash).to eq({}) + end + end end