55describe Split ::EncapsulatedHelper do
66 include Split ::EncapsulatedHelper
77
8- def params
9- raise NoMethodError , "This method is not really defined"
10- end
11-
128 describe "ab_test" do
139 before do
1410 allow_any_instance_of ( Split ::EncapsulatedHelper ::ContextShim ) . to receive ( :ab_user )
1511 . and_return ( mock_user )
1612 end
1713
18- it "should not raise an error when params raises an error" do
19- expect { params } . to raise_error ( NoMethodError )
20- expect { ab_test ( "link_color" , "blue" , "red" ) } . not_to raise_error
14+ context "when params raises an error" do
15+ before do
16+ allow ( self ) . to receive ( :params ) . and_raise ( NoMethodError )
17+ end
18+
19+ it "should not raise an error " do
20+ expect { params } . to raise_error ( NoMethodError )
21+ expect { ab_test ( "link_color" , "blue" , "red" ) } . not_to raise_error
22+ end
2123 end
2224
2325 it "calls the block with selected alternative" do
@@ -43,8 +45,43 @@ def params
4345 include Split ::EncapsulatedHelper
4446 public :session
4547 } . new
48+
4649 expect ( ctx ) . to receive ( :session ) { { } }
4750 expect { ctx . ab_test ( "link_color" , "blue" , "red" ) } . not_to raise_error
4851 end
52+
53+ context "when request is defined in context of ContextShim" do
54+ context "when overriding by params" do
55+ it do
56+ ctx = Class . new {
57+ public :session
58+ def request
59+ build_request ( params : {
60+ "ab_test" => { "link_color" => "blue" }
61+ } )
62+ end
63+ } . new
64+
65+ context_shim = Split ::EncapsulatedHelper ::ContextShim . new ( ctx )
66+ expect ( context_shim . ab_test ( "link_color" , "blue" , "red" ) ) . to be ( "blue" )
67+ end
68+ end
69+
70+ context "when overriding by cookies" do
71+ it do
72+ ctx = Class . new {
73+ public :session
74+ def request
75+ build_request ( cookies : {
76+ "split_override" => '{ "link_color": "red" }'
77+ } )
78+ end
79+ } . new
80+
81+ context_shim = Split ::EncapsulatedHelper ::ContextShim . new ( ctx )
82+ expect ( context_shim . ab_test ( "link_color" , "blue" , "red" ) ) . to be ( "red" )
83+ end
84+ end
85+ end
4986 end
5087end
0 commit comments