Sha256: e82ddcf5aee368b1fae1e3f3f2eb5e886c8fa4596744498c8f1283223f65a5a6

Contents?: true

Size: 1.94 KB

Versions: 6

Compression:

Stored size: 1.94 KB

Contents

require 'spec_helper'

RSpec.describe Base::Normalization do
  describe '::deep_hash_normalize' do
    context 'given arg is not a hash' do
      let(:arg) { [] }

      it 'returns arg' do
        expect(Base::Normalization.recursive_hash_normalize_keys(arg)).to eq []
      end
    end

    context 'given arg is a hash' do
      let(:arg) { { 'a' => 1, 'b' => 2, 'c' => 3 } }

      it 'calles Base::Normalization.deep_hash_normalize' do
        allow(Base::Normalization).to receive(:deep_hash_normalize).with(arg) do
          { a: 1,
            b: 2,
            c: 3 }
        end

        Base::Normalization.recursive_hash_normalize_keys(arg)
      end

      it 'returns given hash with symbol keys' do
        expect(Base::Normalization.recursive_hash_normalize_keys(arg)).to eq(
          a: 1,
          b: 2,
          c: 3)
      end
    end
  end

  describe '::recursive_hash_normalize_keys' do
    context 'given arg is a shallow hash' do
      context 'given hash with string keys' do
        let(:arg) { { 'a' => 1, 'b' => 2, 'c' => 3 } }

        it 'returns given hash with symbol keys' do
          expect(Base::Normalization.deep_hash_normalize(arg)).to eq(
            a: 1,
            b: 2,
            c: 3)
        end
      end

      context 'given hash with symbol keys' do
        let(:arg) { { a: 1, b: 2, c: 3 } }

        it 'returns given hash with symbol keys' do
          expect(Base::Normalization.deep_hash_normalize(arg)).to eq(
            a: 1,
            b: 2,
            c: 3)
        end
      end
    end

    context 'given arg is a deep hash' do
      let(:arg) do
        {
          'a' => 1,
          b: {
            'c' => [2, 3, 4],
            'd' => { 'e' => 'hello' } } }
      end

      it 'returns given hash with symbol keys' do
        expect(Base::Normalization.deep_hash_normalize(arg)).to eq(
          a: 1,
          b: {
            c: [2, 3, 4],
            d: { e: 'hello' } })
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
base-api-client-0.3.3.beta spec/base/normalization_spec.rb
base-api-client-0.3.2.beta spec/base/normalization_spec.rb
base-api-client-0.3.1.beta spec/base/normalization_spec.rb
base-api-client-0.3.beta spec/base/normalization_spec.rb
base-api-client-0.2.5.beta spec/base/normalization_spec.rb
base-api-client-0.2.4.beta spec/base/apis/normalization_spec.rb