Sha256: 57a371b1e8ab654f0646795f9b2485e26396119add36a0c850a314b0a0d45a48

Contents?: true

Size: 957 Bytes

Versions: 4

Compression:

Stored size: 957 Bytes

Contents

RSpec.describe 'Subscribing to instrumentation events' do
  subject(:notifications) { Dry::Monitor::Notifications.new(:app) }

  before do
    Dry::Monitor::Notifications.register_event(:sql, { name: 'rom[sql]' })
  end

  describe '#instrument' do
    it 'allows subscribing via block' do
      captured = []
      payload = { query: 'SELECT 1 FROM users' }

      notifications.subscribe(:sql) do |event|
        captured << [event.id, event[:query]]
      end

      notifications.instrument(:sql, payload)

      expect(captured).to eql([[:sql, 'SELECT 1 FROM users']])
    end

    it 'allows instrumenting via block' do
      captured = []
      payload = { query: 'SELECT 1 FROM users' }

      notifications.subscribe(:sql) do |event|
        captured << [event.id, event[:query]]
      end

      notifications.instrument(:sql, payload) do
        payload
      end

      expect(captured).to eql([[:sql, 'SELECT 1 FROM users']])
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
dry-monitor-0.3.0 spec/integration/instrumentation_spec.rb
dry-monitor-0.2.0 spec/integration/instrumentation_spec.rb
dry-monitor-0.1.2 spec/integration/instrumentation_spec.rb
dry-monitor-0.1.1 spec/integration/instrumentation_spec.rb