Sha256: 83b5c53fb9a01bc2cdb5ccb14a1e4690b1b51d66aacccdc81cb59908bcc3dcfa

Contents?: true

Size: 2 KB

Versions: 4

Compression:

Stored size: 2 KB

Contents

require 'spec_helper'

describe 'flattening' do
  it 'should do nothing on a flat hash' do
    { 'hello' => 'world' }.flatten_keys.should eq 'hello' => 'world'
  end

  it 'should do add a prefix' do
    { 'hello' => 'world' }.flatten_keys(prefix: "foo_").should eq 'foo_hello' => 'world'
  end

  it 'should allow nil values' do
    { 'hello' => 'world', 'bar' => nil }.flatten_keys(prefix: "foo_").should eq 'foo_hello' => 'world', 'foo_bar' => nil
  end

  it 'should work with nested hashes with no parameters' do
    { 'hello' => { 'world' => true }, 'foo' => 'bar' }.flatten_keys.should eq 'helloworld' => true, 'foo' => 'bar'
  end

  it 'should work with many levels of nested' do
    { 'hello' => { 'world' => { 'you' => { 'are' => 'awesome' } } } }.flatten_keys(delimiter: "_").should eq 'hello_world_you_are' => 'awesome'
  end

  it 'should work with delimters and post and prefixes' do
    {
      'hello' => {
        'world' => {
          'you' => {
            'are' => 'awesome'
          }
        }
      }
    }.flatten_keys(
      delimiter: "][",
      prefix: "response[",
      postfix: "]"
    ).should eq 'response[hello][world][you][are]' => 'awesome'
  end

  it 'should wrap keys in prefix and postfix' do
    {
      'hello' => {
        'world' => {
          'you' => {
            'are' => 'awesome'
          }
        }
      },
      'my' => 'lord',
      'foo' => 1,
      'bam' => 'yam'
    }.flatten_keys(
      prefix: "|_",
      postfix: "_|"
    ).should eq '|_helloworldyouare_|' => 'awesome',
                '|_my_|' => 'lord',
                '|_foo_|' => 1,
                '|_bam_|' => 'yam'
  end

  it 'should work with nested arrays' do
    { 'hello' => { 'world' => [[1, 2, 3], [1, 2, 3]] } }.flatten_keys(delimiter: "_").should eq 'hello_world' => [[1, 2, 3], [1, 2, 3]]
  end

  it 'should work with symbol keys' do
    { hello: "world", foo: { :bar => "baz", "flam" => "boil"} }.flatten_keys(delimiter: ",").should eq "hello" => "world", "foo,bar" => "baz", "foo,flam" => "boil"
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
hash-pipe-0.5.0 spec/hash-pipe/flattening_spec.rb
hash-pipe-0.4.1 spec/hash-pipe/flattening_spec.rb
hash-pipe-0.4.0 spec/hash-pipe/flattening_spec.rb
hash-pipe-0.3.0 spec/hash-pipe/flattening_spec.rb