Skip to content

Commit e083659

Browse files
committed
Add tests to context shim override behavior
1 parent bd2bbac commit e083659

2 files changed

Lines changed: 51 additions & 7 deletions

File tree

spec/encapsulated_helper_spec.rb

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,43 @@
4545
include Split::EncapsulatedHelper
4646
public :session
4747
}.new
48+
4849
expect(ctx).to receive(:session) { {} }
4950
expect { ctx.ab_test("link_color", "blue", "red") }.not_to raise_error
5051
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
5186
end
5287
end

spec/spec_helper.rb

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -44,11 +44,20 @@ def params
4444
@params ||= {}
4545
end
4646

47-
def request(ua = "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; de-de) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27")
48-
@request ||= begin
49-
r = OpenStruct.new
50-
r.user_agent = ua
51-
r.ip = "192.168.1.1"
52-
r
53-
end
47+
def request
48+
@request ||= build_request
49+
end
50+
51+
def build_request(
52+
ua: "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; de-de) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27",
53+
ip: "192.168.1.1",
54+
params: {},
55+
cookies: {}
56+
)
57+
r = OpenStruct.new
58+
r.user_agent = ua
59+
r.ip = "192.168.1.1"
60+
r.params = params
61+
r.cookies = cookies
62+
r
5463
end

0 commit comments

Comments
 (0)