Sha256: 914ef6b610a56dc945fbddaa65940d4e7c3764c0c06f27fa00d35630e0ef7ecb

Contents?: true

Size: 1.71 KB

Versions: 5

Compression:

Stored size: 1.71 KB

Contents

RSpec.describe NulogyMessageBusConsumer::Steps::DeduplicateMessages do
  subject(:deduplicate_messages) { NulogyMessageBusConsumer::Steps::DeduplicateMessages.new(logger) }

  let(:logger) { spy }
  let(:id) { SecureRandom.uuid }
  let(:message) { NulogyMessageBusConsumer::Message.new(id: id) }

  context "when a duplicate message is consumed" do
    it "logs a duplicate was detected" do
      expect(logger).to receive(:warn).with(include_json(
        event: "duplicate_message_detected",
        kafka_message_id: id
      ))

      deduplicate_messages.call(message: message) { :success }
      deduplicate_messages.call(message: message) { raise "Not evaluated" }
    end

    it "returns :success" do
      deduplicate_messages.call(message: message) { :success }

      result = deduplicate_messages.call(message: message) { raise "Not evaluated" }

      expect(result).to be(:success)
    end
  end

  context "when a duplicate message is processed at the same time" do
    it "logs a duplicate was detected" do
      expect(logger).to receive(:warn).with(include_json(
        event: "duplicate_message_detected",
        kafka_message_id: id
      ))

      deduplicate_messages.call(message: message) do
        NulogyMessageBusConsumer::ProcessedMessage.create!(id: id)
        :success
      end
    end

    it "returns :success" do
      result = deduplicate_messages.call(message: message) {
        NulogyMessageBusConsumer::ProcessedMessage.create!(id: id)
        :success
      }

      expect(result).to be(:success)
    end
  end

  it "records message was processed" do
    deduplicate_messages.call(message: message) { :success }

    expect(NulogyMessageBusConsumer::ProcessedMessage.exists?(id: id)).to be(true)
  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/steps/deduplicate_messages_spec.rb
nulogy_message_bus_consumer-2.0.1 spec/unit/nulogy_message_bus_consumer/steps/deduplicate_messages_spec.rb
nulogy_message_bus_consumer-2.0.0 spec/unit/nulogy_message_bus_consumer/steps/deduplicate_messages_spec.rb
nulogy_message_bus_consumer-1.0.0 spec/unit/nulogy_message_bus_consumer/steps/deduplicate_messages_spec.rb
nulogy_message_bus_consumer-0.5.0 spec/unit/nulogy_message_bus_consumer/steps/deduplicate_messages_spec.rb