From 293df926be7307cbbad3f8e63d4414d85d76f11d Mon Sep 17 00:00:00 2001 From: "denis.tarasenko" Date: Thu, 20 Jun 2024 11:39:46 +0300 Subject: [PATCH] [DEX-2306] feat: remove mock and new fake class --- CHANGELOG.md | 7 +++++ README.md | 2 +- .../testing/configure_producer_client.rb | 28 +++++++++++++------ lib/sbmt/kafka_producer/version.rb | 2 +- 4 files changed, 28 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index be962fd..6ea058d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,13 @@ and this project adheres to [Semantic Versioning](http://semver.org/). ### Fixed +## [2.2.3] - 2024-06-20 + +### Fixed + +- Remove mock for producer client +- A singleton class of the producer client has been added for testing + ## [2.2.2] - 2024-06-15 ### Fixed diff --git a/README.md b/README.md index 99b3b55..39d8344 100644 --- a/README.md +++ b/README.md @@ -157,7 +157,7 @@ The gem collects base producing metrics using [Yabeda](https://github.com/yabeda ## Testing -To stub a producer request to real Kafka broker, you can use a mock. To do this, please add `require "sbmt/kafka_producer/testing"` to the `spec/rails_helper.rb`. +To stub a producer request to real Kafka broker, you can use a fake class. To do this, please add `require "sbmt/kafka_producer/testing"` to the `spec/rails_helper.rb`. ## Development diff --git a/lib/sbmt/kafka_producer/testing/configure_producer_client.rb b/lib/sbmt/kafka_producer/testing/configure_producer_client.rb index dce043d..12e7a6f 100644 --- a/lib/sbmt/kafka_producer/testing/configure_producer_client.rb +++ b/lib/sbmt/kafka_producer/testing/configure_producer_client.rb @@ -1,13 +1,23 @@ # frozen_string_literal: true -RSpec.configure do |config| - config.before(:each) do - allow(Sbmt::KafkaProducer::KafkaClientFactory) - .to receive(:default_client) - .and_return(instance_double(WaterDrop::Producer, {produce_sync: true, produce_async: true})) - - allow(Sbmt::KafkaProducer::KafkaClientFactory) - .to receive(:build) - .and_return(instance_double(WaterDrop::Producer, {produce_sync: true, produce_async: true})) +class FakeWaterDropClient + def produce_sync(*) + # no op + end + + def produce_async(*) + # no op end end + +Sbmt::KafkaProducer::KafkaClientFactory.singleton_class.prepend( + Module.new do + def default_client + @default_client ||= FakeWaterDropClient.new + end + + def build(*) + @default_client ||= FakeWaterDropClient.new + end + end +) diff --git a/lib/sbmt/kafka_producer/version.rb b/lib/sbmt/kafka_producer/version.rb index fc73253..ad5b252 100644 --- a/lib/sbmt/kafka_producer/version.rb +++ b/lib/sbmt/kafka_producer/version.rb @@ -2,6 +2,6 @@ module Sbmt module KafkaProducer - VERSION = "2.2.2" + VERSION = "2.2.3" end end