spec/encapsulated_helper_spec.rb in split-2.1.0 vs spec/encapsulated_helper_spec.rb in split-2.2.0
- old
+ new
@@ -2,20 +2,51 @@
require 'spec_helper'
describe Split::EncapsulatedHelper do
include Split::EncapsulatedHelper
- before do
- allow_any_instance_of(Split::EncapsulatedHelper::ContextShim).to receive(:ab_user)
- .and_return(mock_user)
- end
def params
raise NoMethodError, 'This method is not really defined'
end
describe "ab_test" do
+ before do
+ allow_any_instance_of(Split::EncapsulatedHelper::ContextShim).to receive(:ab_user)
+ .and_return(mock_user)
+ end
+
it "should not raise an error when params raises an error" do
+ expect{ params }.to raise_error(NoMethodError)
expect(lambda { ab_test('link_color', 'blue', 'red') }).not_to raise_error
+ end
+
+ it "calls the block with selected alternative" do
+ expect{|block| ab_test('link_color', 'red', 'red', &block) }.to yield_with_args('red', nil)
+ end
+
+ context "inside a view" do
+
+ it "works inside ERB" do
+ require 'erb'
+ template = ERB.new(<<-ERB.split(/\s+/s).map(&:strip).join(' '), nil, "%")
+ foo <% ab_test(:foo, '1', '2') do |alt, meta| %>
+ static <%= alt %>
+ <% end %>
+ ERB
+ expect(template.result(binding)).to match /foo static \d/
+ end
+
+ end
+ end
+
+ describe "context" do
+ it 'is passed in shim' do
+ ctx = Class.new{
+ include Split::EncapsulatedHelper
+ public :session
+ }.new
+ expect(ctx).to receive(:session){{}}
+ expect{ ctx.ab_test('link_color', 'blue', 'red') }.not_to raise_error
end
end
end