Sha256: 1b6e5b1789dc847c723fa90ae373ca5a6867e6137adcb948c456a2d8e3407b2e

Contents?: true

Size: 1.58 KB

Versions: 2

Compression:

Stored size: 1.58 KB

Contents

# frozen_string_literal: true

require 'spec_helper'

describe Arstotzka::MethodBuilder do
  describe 'yard' do
    subject(:builder) { described_class.new(attributes, klass, options) }

    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

    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)   { %i[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)   { %i[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

2 entries across 2 versions & 1 rubygems

Version Path
arstotzka-1.3.2 spec/integration/yard/arstotzka/method_builder_spec.rb
arstotzka-1.3.1 spec/integration/yard/arstotzka/method_builder_spec.rb