Skip to content

Commit 8ff6850

Browse files
committed
Correct the bucket value test function
1 parent 145860c commit 8ff6850

File tree

4 files changed

+23
-21
lines changed

4 files changed

+23
-21
lines changed

lib/optimizely/decision_service.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -282,7 +282,7 @@ def get_variations_for_feature_list(project_config, feature_flags, user_context,
282282
ignore_ups = decide_options.include? Optimizely::Decide::OptimizelyDecideOption::IGNORE_USER_PROFILE_SERVICE
283283
user_profile_tracker = nil
284284
unless ignore_ups && @user_profile_service
285-
user_profile_tracker = UserProfileTracker.new(user_context.user_id, @user_profile_service, @logger) if user_context.respond_to?(:user_id)
285+
user_profile_tracker = UserProfileTracker.new(user_context.user_id, @user_profile_service, @logger)
286286
user_profile_tracker.load_user_profile
287287
end
288288
decisions = []

spec/bucketing_holdout_spec.rb

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ def generate_bucket_value(bucketing_id)
4343
end
4444

4545
describe 'Optimizely::Bucketer - Holdout Tests' do
46+
let(:config_body) { OptimizelySpec::CONFIG_BODY_WITH_HOLDOUTS }
47+
let(:config_body_JSON) { OptimizelySpec::CONFIG_BODY_WITH_HOLDOUTS_JSON }
4648
let(:error_handler) { Optimizely::NoOpErrorHandler.new }
4749
let(:spy_logger) { spy('logger') }
4850
let(:test_user_id) { 'test_user_id' }
@@ -68,7 +70,7 @@ def generate_bucket_value(bucketing_id)
6870
expect(holdout).not_to be_nil
6971

7072
# Set bucket value to be within first variation's traffic allocation (0-5000 range)
71-
test_bucketer.set_bucket_values([2500])
73+
test_bucketer.bucket_values([2500])
7274

7375
variation, _reasons = test_bucketer.bucket(config, holdout, test_bucketing_id, test_user_id)
7476

@@ -92,7 +94,7 @@ def generate_bucket_value(bucketing_id)
9294
modified_holdout['trafficAllocation'][0]['endOfRange'] = 1000
9395

9496
# Set bucket value outside traffic allocation range
95-
test_bucketer.set_bucket_values([1500])
97+
test_bucketer.bucket_values([1500])
9698

9799
variation, _reasons = test_bucketer.bucket(config, modified_holdout, test_bucketing_id, test_user_id)
98100

@@ -113,13 +115,13 @@ def generate_bucket_value(bucketing_id)
113115
modified_holdout = OptimizelySpec.deep_clone(holdout)
114116
modified_holdout['trafficAllocation'] = []
115117

116-
test_bucketer.set_bucket_values([5000])
118+
test_bucketer.bucket_values([5000])
117119

118120
variation, _reasons = test_bucketer.bucket(config, modified_holdout, test_bucketing_id, test_user_id)
119121

120122
expect(variation).to be_nil
121123

122-
# Verify bucket was assigned but no variation found
124+
# Verify bucket was assigned
123125
expect(spy_logger).to have_received(:log).with(
124126
Logger::DEBUG,
125127
"Assigned bucket 5000 to user '#{test_user_id}' with bucketing ID: '#{test_bucketing_id}'."
@@ -134,7 +136,7 @@ def generate_bucket_value(bucketing_id)
134136
modified_holdout = OptimizelySpec.deep_clone(holdout)
135137
modified_holdout['trafficAllocation'][0]['entityId'] = 'invalid_variation_id'
136138

137-
test_bucketer.set_bucket_values([5000])
139+
test_bucketer.bucket_values([5000])
138140

139141
variation, _reasons = test_bucketer.bucket(config, modified_holdout, test_bucketing_id, test_user_id)
140142

@@ -152,7 +154,7 @@ def generate_bucket_value(bucketing_id)
152154
expect(holdout).not_to be_nil
153155
expect(holdout['variations']&.length || 0).to eq(0)
154156

155-
test_bucketer.set_bucket_values([5000])
157+
test_bucketer.bucket_values([5000])
156158

157159
variation, _reasons = test_bucketer.bucket(config, holdout, test_bucketing_id, test_user_id)
158160

@@ -173,7 +175,7 @@ def generate_bucket_value(bucketing_id)
173175
modified_holdout = OptimizelySpec.deep_clone(holdout)
174176
modified_holdout['key'] = ''
175177

176-
test_bucketer.set_bucket_values([5000])
178+
test_bucketer.bucket_values([5000])
177179

178180
variation, _reasons = test_bucketer.bucket(config, modified_holdout, test_bucketing_id, test_user_id)
179181

@@ -189,7 +191,7 @@ def generate_bucket_value(bucketing_id)
189191
modified_holdout = OptimizelySpec.deep_clone(holdout)
190192
modified_holdout['key'] = nil
191193

192-
test_bucketer.set_bucket_values([5000])
194+
test_bucketer.bucket_values([5000])
193195

194196
variation, _reasons = test_bucketer.bucket(config, modified_holdout, test_bucketing_id, test_user_id)
195197

@@ -205,7 +207,7 @@ def generate_bucket_value(bucketing_id)
205207
expect(holdout['variations'].length).to be >= 2
206208

207209
# Test user buckets into first variation
208-
test_bucketer.set_bucket_values([2500])
210+
test_bucketer.bucket_values([2500])
209211
variation, _reasons = test_bucketer.bucket(config, holdout, test_bucketing_id, test_user_id)
210212

211213
expect(variation).not_to be_nil
@@ -223,7 +225,7 @@ def generate_bucket_value(bucketing_id)
223225
expect(holdout['variations'][1]['id']).to eq('var_2')
224226

225227
# Test user buckets into second variation (bucket value 7500 should be in 5000-10000 range)
226-
test_bucketer.set_bucket_values([7500])
228+
test_bucketer.bucket_values([7500])
227229
variation, _reasons = test_bucketer.bucket(config, holdout, test_bucketing_id, test_user_id)
228230

229231
expect(variation).not_to be_nil
@@ -240,14 +242,14 @@ def generate_bucket_value(bucketing_id)
240242
modified_holdout['trafficAllocation'][0]['endOfRange'] = 5000
241243

242244
# Test exact boundary value (should be included)
243-
test_bucketer.set_bucket_values([4999])
245+
test_bucketer.bucket_values([4999])
244246
variation, _reasons = test_bucketer.bucket(config, modified_holdout, test_bucketing_id, test_user_id)
245247

246248
expect(variation).not_to be_nil
247249
expect(variation['id']).to eq('var_1')
248250

249251
# Test value just outside boundary (should not be included)
250-
test_bucketer.set_bucket_values([5000])
252+
test_bucketer.bucket_values([5000])
251253
variation, _reasons = test_bucketer.bucket(config, modified_holdout, test_bucketing_id, test_user_id)
252254

253255
expect(variation).to be_nil
@@ -290,7 +292,7 @@ def generate_bucket_value(bucketing_id)
290292
holdout = config.get_holdout('holdout_1')
291293
expect(holdout).not_to be_nil
292294

293-
test_bucketer.set_bucket_values([5000])
295+
test_bucketer.bucket_values([5000])
294296
_variation, reasons = test_bucketer.bucket(config, holdout, test_bucketing_id, test_user_id)
295297

296298
expect(reasons).not_to be_nil

spec/config/datafile_project_config_spec.rb

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1675,13 +1675,9 @@
16751675
holdout = config_with_holdouts.holdouts.first
16761676

16771677
if holdout
1678-
expect(holdout).to have_key('audiences')
1679-
1680-
# Empty audience array means it matches everyone (evaluates to TRUE)
1681-
if holdout['audiences'].empty?
1682-
# This is valid - empty audiences = no restrictions
1683-
expect(holdout['audiences']).to eq([])
1684-
end
1678+
expect(holdout).to have_key('id')
1679+
expect(holdout).to have_key('key')
1680+
expect(holdout.key?('audienceIds') || holdout.key?('audiences')).to be true
16851681
end
16861682
end
16871683

spec/spec_params.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1946,6 +1946,7 @@ module OptimizelySpec
19461946
'id' => 'holdout_1',
19471947
'key' => 'global_holdout',
19481948
'status' => 'Running',
1949+
'audiences' => [],
19491950
'includedFlags' => [],
19501951
'excludedFlags' => ['155554'],
19511952
'variations' => [
@@ -1975,6 +1976,7 @@ module OptimizelySpec
19751976
'id' => 'holdout_empty_1',
19761977
'key' => 'holdout_empty_1',
19771978
'status' => 'Running',
1979+
'audiences' => [],
19781980
'includedFlags' => [],
19791981
'excludedFlags' => [],
19801982
'variations' => [],
@@ -1984,6 +1986,7 @@ module OptimizelySpec
19841986
'id' => 'holdout_2',
19851987
'key' => 'specific_holdout',
19861988
'status' => 'Running',
1989+
'audiences' => [],
19871990
'includedFlags' => ['155559'],
19881991
'excludedFlags' => [],
19891992
'variations' => [
@@ -2004,6 +2007,7 @@ module OptimizelySpec
20042007
'id' => 'holdout_3',
20052008
'key' => 'inactive_holdout',
20062009
'status' => 'Inactive',
2010+
'audiences' => [],
20072011
'includedFlags' => ['155554'],
20082012
'excludedFlags' => [],
20092013
'variations' => [

0 commit comments

Comments
 (0)