Sha256: 108327053addd0bae576c67597c61d855c5cdc95ba4271a8a5a1fbd8ae00b313
Contents?: true
Size: 1.71 KB
Versions: 7
Compression:
Stored size: 1.71 KB
Contents
# frozen_string_literal: true require 'hermes_messenger_of_the_gods/testing/array_endpoint' require 'timeout' module HermesMessengerOfTheGods module Testing module RSpecHelpers def mock_endpoints @mock_endpoints ||= Hash.new { |h, k| h[k] = {} } end def reset_all_mock_endpoints mock_endpoints.values.map(&:values).flatten.map(&:teardown) @mock_endpoints = nil end def fake_endpoint(type, endpoint, *args) klass = "HermesMessengerOfTheGods::Endpoints::#{type.to_s.camelize}".constantize allow(HermesMessengerOfTheGods::EndpointBuilder).to receive(:build) .with(anything, klass, endpoint, any_args) do |_, _, _, *new_args| build_fake_endpoint(klass, endpoint, *new_args) end build_fake_endpoint(klass, endpoint, *args) end def build_fake_endpoint(klass, endpoint, *args) endpoint = endpoint.to_s raise 'Endpoint required' if endpoint == '' mock_endpoints[klass][endpoint]&.options&.merge!(*args) mock_endpoints[klass][endpoint] ||= Endpoints::Local.new(endpoint, "#{klass}::#{endpoint}", *args) mock_endpoints[klass][endpoint] end def setup_for_fake_endpoints! allow(HermesMessengerOfTheGods::EndpointBuilder).to receive(:build) .and_call_original end def fake_all_endpoints! allow(HermesMessengerOfTheGods::EndpointBuilder).to receive(:build) do |_, klass, endpoint, *args| build_fake_endpoint(klass, endpoint, *args) end end end end end if defined?(RSpec) RSpec.configure do |config| config.before(:each) do setup_for_fake_endpoints! reset_all_mock_endpoints end end end
Version data entries
7 entries across 7 versions & 1 rubygems