Sha256: a5eedbd69df1fb2a9e81e6bac516d8bc7c077c27326e469b18f52ed87ebefa27

Contents?: true

Size: 1.17 KB

Versions: 6

Compression:

Stored size: 1.17 KB

Contents

# frozen_string_literal: true

module HermesMessengerOfTheGods
  module Endpoints
    class Local < Base
      class << self
        def clear_queue!
          @received = nil
        end

        def received
          @received ||= Hash.new { |h, k| h[k] = [] }
        end
      end

      attr_accessor :on_receive

      def received
        self.class.received[endpoint]
      end

      def to_transmit_payload(message, raw_message, dispatch_options = {})
        { message: message, raw_message: raw_message, options: dispatch_options }
      end

      def transmit(payload)
        bulk_transmit([payload])
      end

      def bulk_transmit(payloads)
        payloads.each do |msg|
          pub_opts = fetch_option(:publish_options, msg[:raw_message]) || {}

          new_msg = { message: msg[:message], options: msg[:options].merge(pub_opts) }
          received << new_msg
          on_receive&.call(new_msg)
          "Recorded msg ##{self.class.received[endpoint].length} for #{endpoint}"
        end
      end
    end
  end
end

if defined?(RSpec)
  RSpec.configure do |config|
    config.after(:each) do
      HermesMessengerOfTheGods::Endpoints::Local.clear_queue!
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
hermes_messenger_of_the_gods-3.0.1 lib/hermes_messenger_of_the_gods/testing/array_endpoint.rb
hermes_messenger_of_the_gods-3.0.0 lib/hermes_messenger_of_the_gods/testing/array_endpoint.rb
hermes_messenger_of_the_gods-3.0.0.rc5 lib/hermes_messenger_of_the_gods/testing/array_endpoint.rb
hermes_messenger_of_the_gods-3.0.0.rc4 lib/hermes_messenger_of_the_gods/testing/array_endpoint.rb
hermes_messenger_of_the_gods-3.0.0.rc3 lib/hermes_messenger_of_the_gods/testing/array_endpoint.rb
hermes_messenger_of_the_gods-3.0.0.rc2 lib/hermes_messenger_of_the_gods/testing/array_endpoint.rb