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