Sha256: 8a9a6fec6fc79e612001774e0dbeca1b1fa08c67d03b361a1d48ae72eb956d14

Contents?: true

Size: 1.84 KB

Versions: 83

Compression:

Stored size: 1.84 KB

Contents

# frozen_string_literal: true

each_db_config(Deimos::Backends::Db) do
  include_context 'with publish_backend'

  it 'should save to the database' do
    expect(Deimos.config.metrics).to receive(:increment).with(
      'db_producer.insert',
      tags: %w(topic:my-topic),
      by: 3
    )
    described_class.publish(producer_class: MyProducer, messages: messages)
    records = Deimos::KafkaMessage.all
    expect(records.size).to eq(3)
    expect(records[0].attributes.to_h).to include(
      'message' => '{"foo"=>1}',
      'topic' => 'my-topic',
      'key' => 'foo1'
    )
    expect(records[1].attributes.to_h).to include(
      'message' => '{"foo"=>2}',
      'topic' => 'my-topic',
      'key' => 'foo2'
    )
    expect(records[2].attributes.to_h).to include(
      'message' => '{"foo"=>3}',
      'topic' => 'my-topic',
      'key' => 'foo3'
    )
  end

  it 'should add nil messages' do
    described_class.publish(producer_class: MyProducer,
                            messages: [build_message(nil, 'my-topic', 'foo1')])
    expect(Deimos::KafkaMessage.count).to eq(1)
    expect(Deimos::KafkaMessage.last.message).to eq(nil)
  end

  it 'should add to non-keyed messages' do
    described_class.publish(producer_class: MyNoKeyProducer,
                            messages: messages)
    expect(Deimos::KafkaMessage.count).to eq(3)
    described_class.publish(producer_class: MyNoKeyProducer,
                            messages: [messages.first])
    expect(Deimos::KafkaMessage.count).to eq(4)
  end

  it 'should add messages with Hash keys with JSON encoding' do
    described_class.publish(producer_class: MyProducer,
                            messages: [build_message({ foo: 0 }, 'my-topic', { 'test_id' => 0 })])
    expect(Deimos::KafkaMessage.count).to eq(1)
    expect(Deimos::KafkaMessage.last.partition_key).to eq(%(---\ntest_id: 0\n))
  end
end

Version data entries

83 entries across 83 versions & 2 rubygems

Version Path
deimos-ruby-1.24.2 spec/backends/db_spec.rb
deimos-ruby-1.24.1 spec/backends/db_spec.rb
deimos-ruby-1.24.0 spec/backends/db_spec.rb
deimos-ruby-1.23.3 spec/backends/db_spec.rb
deimos-ruby-1.23.2 spec/backends/db_spec.rb
deimos-ruby-1.23.1.pre.beta6 spec/backends/db_spec.rb
deimos-ruby-1.23.1.pre.beta5 spec/backends/db_spec.rb
deimos-ruby-1.23.1.pre.beta4 spec/backends/db_spec.rb
deimos-ruby-1.23.1.pre.beta3 spec/backends/db_spec.rb
deimos-ruby-1.23.1.pre.beta2 spec/backends/db_spec.rb
deimos-ruby-1.23.1.pre.beta1 spec/backends/db_spec.rb
deimos-ruby-1.23.0 spec/backends/db_spec.rb
deimos-ruby-1.22.5 spec/backends/db_spec.rb
deimos-ruby-1.22.4 spec/backends/db_spec.rb
deimos-ruby-1.22.3 spec/backends/db_spec.rb
deimos-ruby-1.22.2 spec/backends/db_spec.rb
deimos-ruby-1.22.1 spec/backends/db_spec.rb
deimos-ruby-1.22 spec/backends/db_spec.rb
deimos-ruby-1.20.1 spec/backends/db_spec.rb
deimos-ruby-1.20.0 spec/backends/db_spec.rb