Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 2 additions & 7 deletions lib/split/encapsulated_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -14,16 +14,12 @@ module EncapsulatedHelper

class ContextShim
include Split::Helper
def initialize(context, original_params)
def initialize(context)
@context = context
@_params = original_params
end
def ab_user
@ab_user ||= Split::Persistence.adapter.new(@context)
end
def params
@_params
end
end

def ab_test(*arguments)
Expand Down Expand Up @@ -51,8 +47,7 @@ def ab_test_finished(*arguments)

# instantiate and memoize a context shim in case of multiple ab_test* calls
def split_context_shim
_params = defined?(params) ? params : {}
@split_context_shim ||= ContextShim.new(self, _params)
@split_context_shim ||= ContextShim.new(self)
end
end
end
24 changes: 24 additions & 0 deletions spec/encapsulated_helper_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
require 'spec_helper'

describe Split::EncapsulatedHelper do
include Split::EncapsulatedHelper

before do
@persistence_adapter = Split.configuration.persistence
Split.configuration.persistence = Hash
end

after do
Split.configuration.persistence = @persistence_adapter
end

def params
raise NoMethodError, 'This method is not really defined'
end

describe "ab_test" do
it "should not raise an error when params raises an error" do
lambda { ab_test('link_color', 'blue', 'red') }.should_not raise_error
end
end
end