Sha256: 46b9abb09eb8d699eae3f1f9e6ba469d2621dac50f8b5b27360c23c9d181af25

Contents?: true

Size: 1.39 KB

Versions: 79

Compression:

Stored size: 1.39 KB

Contents

require 'spec_helper'
require 'r10k/keyed_factory'

describe R10K::KeyedFactory do

  let(:registered) { Class.new }

  describe "registering implementations" do
    it "can register new implementations" do
      subject.register(:klass, registered)
      expect(subject.retrieve(:klass)).to eq registered
    end

    it "raises an error when a duplicate implementation is registered" do
      subject.register(:klass, registered)

      expect {
        subject.register(:klass, registered)
      }.to raise_error(R10K::KeyedFactory::DuplicateImplementationError)
    end

    it "can register classes with nil as a key" do
      subject.register(nil, registered)
      expect(subject.retrieve(nil)).to eq registered
    end
  end

  describe "generating instances" do
    before do
      subject.register(:klass, registered)
    end

    it "generates an instance with the associated class" do
      instance = subject.generate(:klass)
      expect(instance).to be_a_kind_of registered
    end

    it "can generate a class with nil as a key" do
      other = Class.new
      subject.register(nil, other)
      instance = subject.generate(nil)
      expect(instance).to be_a_kind_of other
    end

    it "raises an error if no implementation was registered with the given key" do
      expect {
        subject.generate(:foo)
      }.to raise_error(R10K::KeyedFactory::UnknownImplementationError)
    end
  end
end

Version data entries

79 entries across 79 versions & 2 rubygems

Version Path
r10k-3.15.0 spec/unit/keyed_factory_spec.rb
akerl-r10k-3.14.2.1 spec/unit/keyed_factory_spec.rb
r10k-3.14.2 spec/unit/keyed_factory_spec.rb
r10k-3.14.1 spec/unit/keyed_factory_spec.rb
r10k-3.14.0 spec/unit/keyed_factory_spec.rb
r10k-3.13.0 spec/unit/keyed_factory_spec.rb
r10k-3.12.1 spec/unit/keyed_factory_spec.rb
r10k-3.12.0 spec/unit/keyed_factory_spec.rb
r10k-3.11.0 spec/unit/keyed_factory_spec.rb
r10k-3.10.0 spec/unit/keyed_factory_spec.rb
r10k-3.9.3 spec/unit/keyed_factory_spec.rb
r10k-3.9.2 spec/unit/keyed_factory_spec.rb
r10k-3.9.1 spec/unit/keyed_factory_spec.rb
r10k-3.9.0 spec/unit/keyed_factory_spec.rb
r10k-3.8.0 spec/unit/keyed_factory_spec.rb
r10k-3.7.0 spec/unit/keyed_factory_spec.rb
r10k-3.6.0 spec/unit/keyed_factory_spec.rb
r10k-2.6.9 spec/unit/keyed_factory_spec.rb
r10k-3.5.2 spec/unit/keyed_factory_spec.rb
r10k-3.5.1 spec/unit/keyed_factory_spec.rb