Sha256: 4936e251b79ce211b485bfbf68937255374bbf41a6757b9976b162d7cc54f69f

Contents?: true

Size: 1.55 KB

Versions: 1

Compression:

Stored size: 1.55 KB

Contents

# frozen_string_literal: true

require 'spec_helper'

describe Arstotzka::Builder do
  describe 'yard' do
    let!(:instance) { klass.new(hash) }
    let(:options)   { Arstotzka::Options.new(options_hash) }
    let(:hash) do
      {
        'name' => { first: 'John', last: 'Williams' },
        :age => '20',
        'cars' => 2.0
      }
    end
    let(:builder) { described_class.new(attributes, klass, options) }

    describe '#first_name' do
      let(:klass)        { Class.new(MyModel) }
      let(:attributes)   { [:first_name] }
      let(:options_hash) { { full_path: 'name.first' } }

      before do
        builder.build
      end

      it 'crawls into the hash to find the value of the first name' do
        expect(instance.first_name).to eq('John')
      end
    end

    describe '#age' do
      let(:klass) { Class.new(MyModel) }
      let(:attributes)   { [:age, 'cars'] }
      let(:options_hash) { { type: :integer } }

      before do
        builder.build
      end

      it 'crawls into the hash to find the value of the age' do
        expect(instance.age).to eq(20)
      end

      it do
        expect(instance.age).to be_a(Integer)
      end
    end

    describe '#cars' do
      let(:klass) { Class.new(MyModel) }
      let(:attributes)   { [:age, 'cars'] }
      let(:options_hash) { { type: :integer } }

      before do
        builder.build
      end

      it 'crawls into the hash to find the value of the age' do
        expect(instance.cars).to eq(2)
      end

      it do
        expect(instance.cars).to be_a(Integer)
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
arstotzka-1.1.0 spec/integration/yard/arstotzka/builder_spec.rb