Sha256: 8400558916111e64187e0d27b3209b1a4413eddfcc9c9ea6f69e8e98fbbbf22c

Contents?: true

Size: 1.41 KB

Versions: 1

Compression:

Stored size: 1.41 KB

Contents

# frozen_string_literal: true

require 'spec_helper'

describe Azeroth::ParamsBuilder do
  subject(:params_builder) do
    described_class.new(model: model, builder: builder)
  end

  let(:model)   { Azeroth::Model.new(:document, options) }
  let(:options) { Azeroth::Options.new }
  let(:builder) { Sinclair.new(klass) }
  let(:klass)   { Class.new(ParamsBuilderController) }

  before do
    params_builder.append
  end

  describe '#append' do
    it 'adds id method' do
      expect { builder.build }
        .to add_method(:document_id).to(klass)
    end

    it 'adds params method' do
      expect { builder.build }
        .to add_method(:document_params).to(klass)
    end

    describe 'after the build' do
      let(:controller) { klass.new(id, attributes) }
      let(:document)   { create(:document) }
      let(:attributes) { document.attributes }
      let(:id)         { Random.rand(10..100) }
      let(:expected_attributes) do
        {
          'name' => document.name,
          'reference' => document.reference
        }
      end

      before { builder.build }

      context 'when requesting id' do
        it 'returns id from request path' do
          expect(controller.document_id).to eq(id)
        end
      end

      context 'when requesting params' do
        it 'returns payload' do
          expect(controller.document_params.to_h)
            .to eq(expected_attributes)
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
azeroth-1.0.0 spec/lib/azeroth/params_builder_spec.rb