Sha256: 84950e611a5c87e6c71ad26e62921394fbd0e9091436938643d617d1c872e15c

Contents?: true

Size: 1.11 KB

Versions: 4

Compression:

Stored size: 1.11 KB

Contents

# frozen_string_literal: true

module HermesMessengerOfTheGods
  module Endpoints
    class Local < Base
      class << self
        attr_accessor :transmit_method

        def clear_queue!
          @received = nil
        end

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

      def received
        self.class.received[endpoint]
      end

      def transmit(msg, raw_msg, opts = {})
        if self.class.transmit_method
          self.class.transmit_method.call(self, msg, raw_msg)
        else
          do_transmit(msg, opts, raw_msg)
        end
      end

      def do_transmit(msg, opts, raw_message = {})
        pub_opts = fetch_option(:publish_options, raw_message) || {}
        received << { message: msg, options: opts.merge(pub_opts) }
        "Recorded msg ##{self.class.received[endpoint].length} for #{endpoint}"
      end
    end
  end
end

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

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
hermes_messenger_of_the_gods-2.2.0 lib/hermes_messenger_of_the_gods/testing/array_endpoint.rb
hermes_messenger_of_the_gods-2.1.1 lib/hermes_messenger_of_the_gods/testing/array_endpoint.rb
hermes_messenger_of_the_gods-2.1.0 lib/hermes_messenger_of_the_gods/testing/array_endpoint.rb
hermes_messenger_of_the_gods-2.0.0 lib/hermes_messenger_of_the_gods/testing/array_endpoint.rb