Sha256: d47113776b9f3eb88716807374bdb6199d1813b2fbd7fc6041bed6baf9db8f08

Contents?: true

Size: 1.28 KB

Versions: 2

Compression:

Stored size: 1.28 KB

Contents

require 'spec_helper'

describe Frenetic::StructureRegistry do
  let(:retriever_class) { described_class::Retriever }

  subject(:instance) do
    Frenetic::StructureRegistry.new(retriever_class:retriever_class)
  end

  describe '#construct' do
    let(:resource) { Class.new }
    let(:attributes) do
      {
        'id' => 123
      }
    end
    let(:key) { 'MockKey' }

    subject { super().construct(resource, attributes, key) }

    it 'returns an instantiated Structure class' do
      expect(subject).to be_a Struct::MockKey
    end

    it 'assigns the specified attributes to the Struct instance' do
      expect(subject.id).to eq 123
    end

    it 'registers the Struct' do
      subject
      expect(instance.signatures).to_not be_empty
    end
  end

  describe '#fetch' do
    let(:mock_retriever) { double('MockRetriever') }
    let(:retriever_class) { double('MockRetrieverClass', new: mock_retriever) }
    let(:resource) { Class.new }
    let(:attributes) do
      {
        'id' => 123
      }
    end
    let(:key) { 'MockKey' }

    subject { super().fetch(resource, attributes, key) }

    it 'invokes Frenetic::StructureRegistry::Retriever#call' do
      allow(mock_retriever).to receive(:call)
      subject
      expect(mock_retriever).to have_received(:call)
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
frenetic-3.0.1 spec/structure_registry_spec.rb
frenetic-3.0.0 spec/structure_registry_spec.rb