Sha256: b334306f90c64b6281344c1ecd4815348b02be4d6c1a5aaee7b97a21a27f24d0

Contents?: true

Size: 895 Bytes

Versions: 8

Compression:

Stored size: 895 Bytes

Contents

require 'rom'
require 'rom/memory'

RSpec.describe ROM::Plugins::Relation::Instrumentation do
  before do
    described_class.mixin Module.new
  end

  subject(:relation) do
    relation_class.new(dataset, notifications: notifications)
  end

  let(:dataset) do
    double(:dataset)
  end

  let(:relation_class) do
    Class.new(ROM::Memory::Relation) do
      schema(:users) do
        attribute :name, ROM::Types::String
      end

      use :instrumentation

      instrument def all
        self
      end
    end
  end

  let(:notifications) { spy(:notifications) }

  it 'uses notifications API when materializing a relation' do
    relation.to_a

    expect(notifications).to have_received(:instrument).with(:memory, name: :users)
  end

  it 'instruments custom methods' do
    relation.all

    expect(notifications).to have_received(:instrument).with(:memory, name: :users)
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
rom-3.3.3 spec/unit/rom/plugins/relation/instrumentation_spec.rb
rom-3.3.2 spec/unit/rom/plugins/relation/instrumentation_spec.rb
rom-3.3.1 spec/unit/rom/plugins/relation/instrumentation_spec.rb
rom-3.3.0 spec/unit/rom/plugins/relation/instrumentation_spec.rb
rom-3.2.3 spec/unit/rom/plugins/relation/instrumentation_spec.rb
rom-3.2.2 spec/unit/rom/plugins/relation/instrumentation_spec.rb
rom-3.2.1 spec/unit/rom/plugins/relation/instrumentation_spec.rb
rom-3.2.0 spec/unit/rom/plugins/relation/instrumentation_spec.rb