Class: Rimless::RSpec::Matchers::HaveSentKafkaMessage
- Inherits:
-
RSpec::Matchers::BuiltIn::BaseMatcher
- Object
- RSpec::Matchers::BuiltIn::BaseMatcher
- Rimless::RSpec::Matchers::HaveSentKafkaMessage
- Includes:
- RSpec::Mocks::ExampleMethods
- Defined in:
- lib/rimless/rspec/matchers.rb
Overview
The Apache Kafka message expectation.
rubocop:disable Metrics/ClassLength because its almost RSpec API code
Instance Method Summary collapse
-
#at_least(count) ⇒ HaveSentKafkaMessage
Set the expected amount of message (at least).
-
#at_most(count) ⇒ HaveSentKafkaMessage
Set the expected amount of message (at most).
-
#capture { ... } ⇒ Array<Hash{Symbol => Mixed}>
Capture all Apache Kafka messages of the given block.
-
#does_not_match?(proc) ⇒ Boolean
The actual RSpec API check for the expectation (negative).
-
#exactly(count) ⇒ HaveSentKafkaMessage
Set the expected amount of message (exactly).
-
#initialize(schema) ⇒ HaveSentKafkaMessage
constructor
Instantiate a new expectation object.
-
#matches?(proc) ⇒ Boolean
The actual RSpec API check for the expectation.
-
#once ⇒ HaveSentKafkaMessage
Just syntactic sugar for a regular exactly(:once) call.
-
#supports_block_expectations? ⇒ Boolean
Serve the RSpec matcher API and signalize we support block evaluation.
-
#thrice ⇒ HaveSentKafkaMessage
Just syntactic sugar for a regular exactly(:thrice) call.
-
#times ⇒ HaveSentKafkaMessage
Just syntactic sugar.
-
#twice ⇒ HaveSentKafkaMessage
Just syntactic sugar for a regular exactly(:twice) call.
-
#with(**args) ⇒ HaveSentKafkaMessage
Collect the expectation arguments for the Kafka message passing.
-
#with_data(**args) ⇒ HaveSentKafkaMessage
Collect the expectations for the encoded message.
Constructor Details
#initialize(schema) ⇒ HaveSentKafkaMessage
Instantiate a new expectation object.
18 19 20 21 22 23 24 25 |
# File 'lib/rimless/rspec/matchers.rb', line 18 def initialize(schema) super @schema = schema @args = {} @data = {} @messages = [] set_expected_number(:exactly, 1) end |
Instance Method Details
#at_least(count) ⇒ HaveSentKafkaMessage
Set the expected amount of message (at least).
69 70 71 72 |
# File 'lib/rimless/rspec/matchers.rb', line 69 def at_least(count) set_expected_number(:at_least, count) self end |
#at_most(count) ⇒ HaveSentKafkaMessage
Set the expected amount of message (at most).
78 79 80 81 |
# File 'lib/rimless/rspec/matchers.rb', line 78 def at_most(count) set_expected_number(:at_most, count) self end |
#capture { ... } ⇒ Array<Hash{Symbol => Mixed}>
Capture all Apache Kafka messages of the given block.
31 32 33 34 |
# File 'lib/rimless/rspec/matchers.rb', line 31 def capture(&block) matches?(block) @messages end |
#does_not_match?(proc) ⇒ Boolean
The actual RSpec API check for the expectation (negative).
138 139 140 141 142 |
# File 'lib/rimless/rspec/matchers.rb', line 138 def does_not_match?(proc) set_expected_number(:at_least, 1) !matches?(proc) end |
#exactly(count) ⇒ HaveSentKafkaMessage
Set the expected amount of message (exactly).
60 61 62 63 |
# File 'lib/rimless/rspec/matchers.rb', line 60 def exactly(count) set_expected_number(:exactly, count) self end |
#matches?(proc) ⇒ Boolean
The actual RSpec API check for the expectation.
122 123 124 125 126 127 128 129 130 131 132 |
# File 'lib/rimless/rspec/matchers.rb', line 122 def matches?(proc) unless proc.is_a? Proc raise ArgumentError, 'have_sent_kafka_message and ' \ 'sent_kafka_message only support block ' \ 'expectations' end proc.call check end |
#once ⇒ HaveSentKafkaMessage
Just syntactic sugar for a regular exactly(:once) call.
93 94 95 |
# File 'lib/rimless/rspec/matchers.rb', line 93 def once exactly(:once) end |
#supports_block_expectations? ⇒ Boolean
Serve the RSpec matcher API and signalize we support block evaluation.
114 115 116 |
# File 'lib/rimless/rspec/matchers.rb', line 114 def supports_block_expectations? true end |
#thrice ⇒ HaveSentKafkaMessage
Just syntactic sugar for a regular exactly(:thrice) call.
107 108 109 |
# File 'lib/rimless/rspec/matchers.rb', line 107 def thrice exactly(:thrice) end |
#times ⇒ HaveSentKafkaMessage
Just syntactic sugar.
86 87 88 |
# File 'lib/rimless/rspec/matchers.rb', line 86 def times self end |
#twice ⇒ HaveSentKafkaMessage
Just syntactic sugar for a regular exactly(:twice) call.
100 101 102 |
# File 'lib/rimless/rspec/matchers.rb', line 100 def twice exactly(:twice) end |
#with(**args) ⇒ HaveSentKafkaMessage
Collect the expectation arguments for the Kafka message passing. (eg. topic)
41 42 43 44 |
# File 'lib/rimless/rspec/matchers.rb', line 41 def with(**args) @args = args self end |
#with_data(**args) ⇒ HaveSentKafkaMessage
Collect the expectations for the encoded message. The passed message will be decoded accordingly for the check.
51 52 53 54 |
# File 'lib/rimless/rspec/matchers.rb', line 51 def with_data(**args) @data = args self end |