Sha256: 570aaab2b42a628611bde70d44a49b86e271d4642cbe0f9db565a292123dde2f

Contents?: true

Size: 1.8 KB

Versions: 1

Compression:

Stored size: 1.8 KB

Contents

require 'rails'
require 'flipper/railtie'

RSpec.describe Flipper::Railtie do
  let(:application) do
    Class.new(Rails::Application).new(
      railties: [Flipper::Railtie],
    ).tap do |app|
      app.config.eager_load = false
      app.run_load_hooks!
    end
  end

  before do
    ActiveSupport::Dependencies.autoload_paths = ActiveSupport::Dependencies.autoload_paths.dup
    ActiveSupport::Dependencies.autoload_once_paths = ActiveSupport::Dependencies.autoload_once_paths.dup
  end

  let(:config) { application.config.flipper }

  subject { application.initialize! }

  describe 'initializers' do
    it 'sets defaults' do
      expect(config.env_key).to eq("flipper")
      expect(config.memoize).to be(true)
      expect(config.preload).to be(true)
    end

    it "configures instrumentor on default instance" do
      subject

      expect(Flipper.instance.instrumenter).to eq(ActiveSupport::Notifications)
    end

    it 'uses Memoizer middleware if config.memoize = true' do
      expect(subject.middleware).to include(Flipper::Middleware::Memoizer)
    end

    it 'does not use Memoizer middleware if config.memoize = false' do
      # load but don't initialize
      config.memoize = false

      expect(subject.middleware).not_to include(Flipper::Middleware::Memoizer)
    end

    it 'passes config to memoizer' do
      # load but don't initialize
      config.update(
        env_key: 'my_flipper',
        preload: [:stats, :search]
      )

      expect(Flipper::Middleware::Memoizer).to receive(:new).with(application.routes,
        env_key: 'my_flipper', preload: [:stats, :search], if: nil
      )

      subject # initialize
    end

    it "defines #flipper_id on AR::Base" do
      subject
      require 'active_record'
      expect(ActiveRecord::Base.ancestors).to include(Flipper::Identifier)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
flipper-0.23.0 spec/flipper/railtie_spec.rb