require 'webmock'
require 'webmock/rspec'
require 'avro_turf/test/fake_confluent_schema_registry_server'
require 'rimless'
require 'rimless/rspec/helpers'
require 'rimless/rspec/matchers'
require 'karafka/testing/rspec/helpers'
raise 'No RSPEC_CONFIGURER is defined, webmock is missing?' \
unless defined?(RSPEC_CONFIGURER)
RSPEC_CONFIGURER.configure do |config|
config.include Rimless::RSpec::Helpers
config.include Rimless::RSpec::Matchers
config.include Karafka::Testing::RSpec::Helpers
config.define_derived_metadata(file_path: %r{/spec/consumers/}) do |meta|
meta[:type] = :consumer
end
config.before(:suite) do
unless ENV['TEST_ENV_NUMBER'].nil?
Rimless.configure do |conf|
num = ENV.fetch('TEST_ENV_NUMBER', nil)
num = '1' if num.empty?
conf.compiled_avro_schema_path =
conf.compiled_avro_schema_path.join("test-worker-#{num}")
end
end
end
config.before(:each) do |example|
connection = Rimless.avro.instance_variable_get(:@registry)
.instance_variable_get(:@upstream)
.instance_variable_get(:@connection)
.instance_variable_get(:@data)
connection[:mock] = true
stub_request(:any, %r{^http://#{connection[:hostname]}})
.to_rack(FakeConfluentSchemaRegistryServer)
FakeConfluentSchemaRegistryServer.clear
allow(WaterDrop::AsyncProducer).to receive(:call)
allow(WaterDrop::SyncProducer).to receive(:call)
Rimless.configure_avro_turf
Rimless.consumer.initialize! if example.metadata[:type] == :consumer
end
end