Sha256: 528df3675c086322e592e46de5d4d4d8ac0cfcc5b19b862b0af5a841e51d2fd4

Contents?: true

Size: 1.11 KB

Versions: 1

Compression:

Stored size: 1.11 KB

Contents

# frozen_string_literal: truie

describe Arstotzka::Wrapper do
  subject(:wrapper) { described_class.new(clazz: clazz, type: type) }

  let(:type)  { nil }
  let(:clazz) { nil }

  describe 'yard' do
    describe '#wrap' do
      context 'when clazz is defined' do
        let(:clazz) { Person }
        let(:value) { 'john' }

        it 'wraps value with the clazz' do
          expect(wrapper.wrap(value)).to eq(Person.new(value))
        end
      end

      context 'when type is defined' do
        let(:type)  { :integer }
        let(:value) { %w[10 20 30] }

        it 'converts value to type' do
          expect(wrapper.wrap(value)).to eq([10, 20, 30])
        end
      end

      context 'when type and class is defined' do
        let(:type)    { :string }
        let(:clazz)   { Request }
        let(:value)   { { 'key' => 'value' } }
        let(:request) { wrapper.wrap(value) }

        it 'returns a wrapped object' do
          expect(request).to be_a(Request)
        end

        it 'casts before wrapping' do
          expect(request.payload).to eq('{"key"=>"value"}')
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
arstotzka-1.0.4 spec/integration/yard/arstotzka/wrapper_spec.rb