deimos-ruby 2.4.0.pre.beta10 → 2.4.0.pre.beta12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2bfb935df5a67962364fbb6774c4dd03e2e56cbdb4d6dad7d15cb034b9522dee
4
- data.tar.gz: c55979be4de60e902b02f80c48bce656d550d89fdb712938462d1f8b1af1f38b
3
+ metadata.gz: 695f64519c50cc4d06e435e3705fb101030621f3143fb6343c4c10429eb57508
4
+ data.tar.gz: d8ef51c23c10b0c5d471b4975e9a4189d7453432ec0e6ce3a86ba89b9f97c48d
5
5
  SHA512:
6
- metadata.gz: 9fc0b3ed398049f73002d77c8b103f69b1b569616a9bfa960921edc3947702fc3affdc7d39676db43e8e935df2e08b2bb97726ea93060503d3f53f00a36a79bc
7
- data.tar.gz: cae1f740a93966da3076095c1adbb1e9fd125ee4531947d15913d98795d460c21d3a98a6840137ef40a1d8d13374833065a59ee6e04196cb58e1c9b3f4acc1b8
6
+ metadata.gz: 732f88b2ba9af76b9747297f7ac7be73d9757d2e3f90ce3652cfaedb352c89f806fc6217037f4283ea07a3ea7fe1f76bc26b21b50526de8fa4e31dcc0efdcc7d
7
+ data.tar.gz: 6647929e70a709b223085542516694dbe871428ba7e018e857c0758a4420aa58a0882587055464ac36755f70fb4d548157fe2dc8ba5d566bb12cec1102284d71
data/CHANGELOG.md CHANGED
@@ -8,6 +8,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
8
8
  ## UNRELEASED
9
9
 
10
10
  - Major change: Switch from using `avro_turf` and `proto_turf` to use `schema_registry_client`, which handles both Avro and Protobuf.
11
+ - Added `have_sent_including` RSpec matcher to allow for Protobuf messages that use default values to be checked.
11
12
 
12
13
  # 2.3.0 - 2026-01-13
13
14
 
data/README.md CHANGED
@@ -1074,6 +1074,18 @@ end
1074
1074
  # topic, without having to know which class produced it.
1075
1075
  expect(topic_name).to have_sent(payload, key=nil, partition_key=nil, headers=nil)
1076
1076
 
1077
+ # You can use regular hash matching:
1078
+ expect(topic_name).to have_sent({'some_key' => 'some-value', 'message_id' => anything})
1079
+
1080
+ # For Protobufs, default values are stripped from the hash so you need to use actual Protobuf
1081
+ # objects:
1082
+ expect(topic.name).to have_sent(MyMessage.new(some_key: 'some-value', message_id: 'my-message-id'))
1083
+
1084
+ # However, Protobufs don't allow RSpec-style matching, so you can at least do a
1085
+ # simple `include`-style matcher:
1086
+
1087
+ expect(topic.name).to have_sent_including(MyMessage.new(some_key: 'some-value'))
1088
+
1077
1089
  # Inspect sent messages
1078
1090
  message = Deimos::TestHelpers.sent_messages[0]
1079
1091
  expect(message).to eq({
@@ -34,7 +34,7 @@ module Deimos
34
34
  end
35
35
  field_name = _field_name_from_schema(@key_schema)
36
36
  payload = key.is_a?(Hash) ? key : { field_name => key }
37
- encode(payload, schema: @key_schema['name'], topic: topic)
37
+ encode(payload, schema: @key_schema['name'], topic: topic, is_key: true)
38
38
  end
39
39
 
40
40
  # @override
@@ -25,9 +25,8 @@ module Deimos
25
25
  logger: Karafka.logger,
26
26
  user: Deimos.config.schema.user,
27
27
  password: Deimos.config.schema.password,
28
- schema_type: SchemaRegistry::Schema::Avro
28
+ schema_type: SchemaRegistry::Schema::Avro.new(schema_store: @schema_store)
29
29
  )
30
- SchemaRegistry.avro_schema_path = Deimos.config.schema.path
31
30
  @schema_registry
32
31
  end
33
32
  end
@@ -115,7 +115,7 @@ module Deimos
115
115
  str + "\nAll Messages received:\n#{message_string}"
116
116
  end
117
117
 
118
- RSpec::Matchers.define :have_sent do |msg, key=nil, partition_key=nil, headers=nil|
118
+ RSpec::Matchers.define :have_sent do |msg, key=nil, partition_key=nil, headers=nil, including: false|
119
119
  message = Deimos::TestHelpers.normalize_message(msg)
120
120
  match do |topic|
121
121
  message_key = Deimos::TestHelpers.normalize_message(key)
@@ -127,8 +127,12 @@ module Deimos
127
127
  if m.respond_to?(:[]) && m[:payload].respond_to?(:[]) && m[:payload][:payload_key].nil?
128
128
  m[:payload].delete(:payload_key)
129
129
  end
130
- hash_matcher.send(:match, message, m[:payload]) &&
131
- topic == m[:topic] &&
130
+ if including
131
+ next false unless RSpec::Matchers::BuiltIn::Include.new(message).matches?(m[:payload])
132
+ else
133
+ next false unless hash_matcher.send(:match, message, m[:payload])
134
+ end
135
+ topic == m[:topic] &&
132
136
  (key.present? ? message_key == m[:key] : true) &&
133
137
  (partition_key.present? ? partition_key == m[:partition_key] : true) &&
134
138
  if headers.present?
@@ -149,6 +153,19 @@ module Deimos
149
153
  end
150
154
  end
151
155
 
156
+ RSpec::Matchers.define :have_sent_including do |msg, key=nil, partition_key=nil, headers=nil|
157
+ message = Deimos::TestHelpers.normalize_message(msg)
158
+ match do |topic|
159
+ expect(topic).to have_sent(msg, key, partition_key, headers, including: true)
160
+ end
161
+ failure_message do |topic|
162
+ _frk_failure_message(topic, message, key, partition_key)
163
+ end
164
+ failure_message_when_negated do |topic|
165
+ _frk_failure_message(topic, message, key, partition_key, true)
166
+ end
167
+ end
168
+
152
169
  # Clear all sent messages - e.g. if we want to check that
153
170
  # particular messages were sent or not sent after a point in time.
154
171
  # @return [void]
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Deimos
4
- VERSION = '2.4.0-beta10'
4
+ VERSION = '2.4.0-beta12'
5
5
  end
@@ -65,7 +65,7 @@ RSpec.shared_examples_for('an Avro backend') do
65
65
  allow(backend).to receive(:encode).and_return('itsme')
66
66
  expect(backend.encode_key('test_id', 1, topic: 'topic')).to eq('itsme')
67
67
  expect(backend).to have_received(:encode).
68
- with({ 'test_id' => 1 }, { schema: 'MySchema_key', topic: 'topic' })
68
+ with({ 'test_id' => 1 }, { schema: 'MySchema_key', topic: 'topic', is_key: true })
69
69
  expect(backend.schema_store.find('com.my-namespace.MySchema_key').to_avro).
70
70
  to eq(
71
71
  'doc' => 'Key for com.my-namespace.MySchema - autogenerated by Deimos',
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: deimos-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.0.pre.beta10
4
+ version: 2.4.0.pre.beta12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Orner