Sha256: 6f9f3be6243901951324743dc1ce32855a6b495f8f17842772048a8dca76cf94

Contents?: true

Size: 839 Bytes

Versions: 1

Compression:

Stored size: 839 Bytes

Contents

require 'rom'
require 'rom/memory'

RSpec.describe ROM::Plugins::Relation::Instrumentation do
  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

1 entries across 1 versions & 1 rubygems

Version Path
rom-3.1.0 spec/unit/rom/plugins/relation/instrumentation_spec.rb