Sha256: 15b5ba3d4c37bfab8b59ce777841aa4f9c4ff08365d56977012d4fd760fb3b98

Contents?: true

Size: 1.37 KB

Versions: 5

Compression:

Stored size: 1.37 KB

Contents

RSpec.describe NulogyMessageBusConsumer::Pipeline do
  let(:handler) { spy }

  describe "#invoke_pipeline" do
    it "raises if handler is not provided" do
      expect { invoke_pipeline }.to raise_error("Handlers are the end of the line. Do not use yield.")
    end

    it "calls the handler with message" do
      message = NulogyMessageBusConsumer::Message.new

      expect(handler).to receive(:call).with(message: message)

      invoke_pipeline(
        ->(**_, &block) { block.yield(message: message) },
        handler
      )
    end

    it "passes information along" do
      message = NulogyMessageBusConsumer::Message.new

      expect(handler).to receive(:call).with(message: message)

      invoke_pipeline(
        ->(**_, &block) { block.yield(message: message) },
        ->(**_, &block) { block.yield },
        handler
      )
    end

    it "raises when overwriting an existing key" do
      message = NulogyMessageBusConsumer::Message.new
      other_message = NulogyMessageBusConsumer::Message.new

      expect {
        invoke_pipeline(
          ->(**_, &block) { block.yield(message: message) },
          ->(**_, &block) { block.yield(message: other_message) },
          handler
        )
      }.to raise_error("Cannot override existing argument(s): message")
    end
  end

  def invoke_pipeline(*steps)
    NulogyMessageBusConsumer::Pipeline.new(steps).invoke
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
nulogy_message_bus_consumer-3.0.0 spec/unit/nulogy_message_bus_consumer/pipeline_spec.rb
nulogy_message_bus_consumer-2.0.1 spec/unit/nulogy_message_bus_consumer/pipeline_spec.rb
nulogy_message_bus_consumer-2.0.0 spec/unit/nulogy_message_bus_consumer/pipeline_spec.rb
nulogy_message_bus_consumer-1.0.0 spec/unit/nulogy_message_bus_consumer/pipeline_spec.rb
nulogy_message_bus_consumer-0.5.0 spec/unit/nulogy_message_bus_consumer/pipeline_spec.rb