Sha256: d12ebc6acefde8c89746a6c18f7bdff0607099cdcad5339fef9e6b3f8baac5db

Contents?: true

Size: 880 Bytes

Versions: 2

Compression:

Stored size: 880 Bytes

Contents

require 'spec_helper'

describe SpaceObject::Encoder do
  let(:valid_example) { {:hello => 'world', 'foo' => :bar, 'foobar' => {'baz' => 'zip'}} }
  let(:invalid_example) { { 'keys are not allowed' => 'value' } }
  let(:wrong_class) { ['foo'] }

  describe '#encode' do
    it 'only encodes Hash objects' do
      expect { SpaceObject::Encoder.new(wrong_class).encode }.to raise_error(ArgumentError)
    end

    it 'encodes a compliant Hash as a SpaceObject::Base' do |variable|
      space = SpaceObject::Encoder.new(valid_example).encode
      expect(space['hello']).to eq('world')
      expect(space['foo']).to eq('bar')
      expect(space['foobar baz']).to eq('zip')
    end

    it 'raises a SpaceObject::EncodeError if an invalid key is present' do
      expect { SpaceObject::Encoder.new(invalid_example).encode }.to raise_error(SpaceObject::EncodeError)
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
space_object-0.1.4 spec/space_object/encoder_spec.rb
space_object-0.1.3 spec/space_object/encoder_spec.rb