Sha256: 12048323f9c8dfbd35fd80d22c70825346ae1be9a075dc08d5b0570695eefe82

Contents?: true

Size: 1.27 KB

Versions: 8

Compression:

Stored size: 1.27 KB

Contents

require "rails_helper"

describe Shamu::Rails::Features, type: :controller do
  controller ActionController::Base do

    public :feature_enabled?

    def show
      render plain: ""
    end
  end

  hunt( :features_service, Shamu::Features::FeaturesService ) do
    scorpion.new Shamu::Features::FeaturesService, File.expand_path( "../features.yml", __FILE__ ), {}
  end

  hunt( :session_store, Shamu::Sessions::CookieStore )

  it "resolves toggles" do
    expect( session_store ).to receive( :fetch ).and_return nil
    allow( session_store ).to receive( :set )

    expect( controller ).to receive( :show ) do
      expect( controller.feature_enabled?( "shopping/nux" ) ).to be_truthy
      controller.render plain: ""
    end

    get :show, params: { id: 1 }
  end

  it "allows toggles to be overridden by query param" do
    expect( session_store ).to receive( :fetch ).and_return nil
    allow( session_store ).to receive( :set )

    override = features_service.toggle_codec.pack( "shopping/discounts" => true )

    expect( controller ).to receive( :show ) do
      expect( controller.feature_enabled?( "shopping/discounts" ) ).to be_truthy
      controller.render plain: ""
    end

    get :show, params: { id: 1, Shamu::Features::EnvStore::RACK_PARAMS_KEY => override }
  end

end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
shamu-0.0.21 spec/lib/shamu/rails/features_spec.rb
shamu-0.0.20 spec/lib/shamu/rails/features_spec.rb
shamu-0.0.19 spec/lib/shamu/rails/features_spec.rb
shamu-0.0.18 spec/lib/shamu/rails/features_spec.rb
shamu-0.0.17 spec/lib/shamu/rails/features_spec.rb
shamu-0.0.15 spec/lib/shamu/rails/features_spec.rb
shamu-0.0.14 spec/lib/shamu/rails/features_spec.rb
shamu-0.0.13 spec/lib/shamu/rails/features_spec.rb