Skip to content

Commit b0f77cd

Browse files
committed
FFM-12192 Add singleton tests
1 parent da5bdd7 commit b0f77cd

File tree

1 file changed

+60
-21
lines changed

1 file changed

+60
-21
lines changed

test/ff/ruby/server/sdk/sdk_test.rb

Lines changed: 60 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -31,38 +31,55 @@ def test_version_number
3131
end
3232

3333
def test_client_singleton_inst
34-
3534
instance = CfClient.instance
36-
(0..@counter).each {
35+
(0..@counter).each do
36+
compare_equal = CfClient.instance
37+
assert_equal(instance, compare_equal)
38+
end
39+
end
3740

41+
def test_client_singleton_init
42+
instance = CfClient.instance
43+
(0..@counter).each do
3844
compare_equal = CfClient.instance
39-
compare_not_equal = CfClient.new("test")
45+
assert_equal(instance, compare_equal)
46+
end
47+
end
4048

41-
refute_nil compare_equal
42-
refute_nil compare_not_equal
49+
def test_client_initialization
50+
config = ConfigBuilder.new.build
51+
connector = HarnessConnector.new(@string, config, nil)
52+
api_key = "test_api_key"
4353

44-
assert_equal(instance, compare_equal)
45-
assert(instance != compare_not_equal)
46-
}
54+
client = CfClient.instance
55+
client.init(api_key, config, connector)
56+
57+
# Verify that @client is initialized and is an instance of InnerClient
58+
inner_client = client.instance_variable_get(:@client)
59+
refute_nil(inner_client, "InnerClient should be initialized")
60+
assert_instance_of(InnerClient, inner_client, "InnerClient should be an instance of InnerClient")
4761
end
4862

49-
def test_client_constructor_inst
63+
def test_client_reinitialization
64+
config1 = ConfigBuilder.new.build
65+
connector1 = HarnessConnector.new(@string, config1, nil)
66+
api_key1 = "api_key_1"
5067

51-
test_string = "test"
52-
config = ConfigBuilder.new.build
53-
connector = HarnessConnector.new(test_string, config, nil)
68+
client = CfClient.instance
69+
client.init(api_key1, config1, connector1)
70+
71+
# Capture the initial @client instance
72+
initial_inner_client = client.instance_variable_get(:@client)
5473

55-
instance_with_no_config = CfClient.new(test_string)
56-
instance_with_config = CfClient.new(test_string, config)
57-
instance_with_connector = CfClient.new(test_string, config, connector)
74+
# Attempt to reinitialize with different parameters
75+
config2 = ConfigBuilder.new.build
76+
connector2 = HarnessConnector.new(@string, config2, nil)
77+
api_key2 = "api_key_2"
5878

59-
refute_nil instance_with_config
60-
refute_nil instance_with_connector
61-
refute_nil instance_with_no_config
79+
client.init(api_key2, config2, connector2)
6280

63-
assert(instance_with_config != instance_with_no_config)
64-
assert(instance_with_connector != instance_with_no_config)
65-
assert(instance_with_connector != instance_with_config)
81+
# Verify that the @client instance remains the same
82+
assert_same(initial_inner_client, client.instance_variable_get(:@client))
6683
end
6784

6885
def test_config_constructor_inst
@@ -76,6 +93,28 @@ def test_config_constructor_inst
7693
assert(config != config_not_equal)
7794
end
7895

96+
def test_client_methods
97+
config = ConfigBuilder.new.build
98+
connector = HarnessConnector.new(@string, config, nil)
99+
api_key = "test_api_key"
100+
101+
client = CfClient.instance
102+
client.init(api_key, config, connector)
103+
104+
inner_client = client.instance_variable_get(:@client)
105+
inner_client.stub :bool_variation, true do
106+
assert_equal(true, client.bool_variation("identifier", "target", false))
107+
end
108+
109+
inner_client.stub :string_variation, "variation" do
110+
assert_equal("variation", client.string_variation("identifier", "target", "default"))
111+
end
112+
113+
inner_client.stub :number_variation, 42 do
114+
assert_equal(42, client.number_variation("identifier", "target", 0))
115+
end
116+
end
117+
79118
def test_config_properties
80119

81120
config = Config.new

0 commit comments

Comments
 (0)