Sha256: 4e17f1102ddb182f70b6c405d184e11acf629e4f7fe044a83dcb2ec0db2ec1c5

Contents?: true

Size: 1.04 KB

Versions: 3

Compression:

Stored size: 1.04 KB

Contents

require "helper"
require "flipper/adapters/memory"
require "flipper/instrumenters/memory"
require "flipper/adapters/sync/synchronizer"

RSpec.describe Flipper::Adapters::Sync::Synchronizer do
  let(:local) { Flipper::Adapters::Memory.new }
  let(:remote) { Flipper::Adapters::Memory.new }
  let(:instrumenter) { Flipper::Instrumenters::Memory.new }

  subject { described_class.new(local, remote, instrumenter: instrumenter) }

  it "instruments call" do
    subject.call
    events = instrumenter.events.select do |event|
      event.name == "synchronizer_call.flipper"
    end
    expect(events.size).to be(1)
  end

  it "does not raise, but instruments exceptions for visibility" do
    exception = StandardError.new
    expect(remote).to receive(:get_all).and_raise(exception)

    expect { subject.call }.not_to raise_error

    events = instrumenter.events.select do |event|
      event.name == "synchronizer_exception.flipper"
    end
    expect(events.size).to be(1)

    event = events[0]
    expect(event.payload[:exception]).to eq(exception)
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
flipper-0.14.0 spec/flipper/adapters/sync/synchronizer_spec.rb
flipper-0.13.0 spec/flipper/adapters/sync/synchronizer_spec.rb
flipper-0.13.0.beta1 spec/flipper/adapters/sync/synchronizer_spec.rb