prefab-cloud-ruby 0.23.8 → 0.24.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -34,14 +34,13 @@ class TestLocalConfigParser < Minitest::Test
34
34
  assert_equal 1, config.rows[0].values.size
35
35
 
36
36
  value_row = config.rows[0].values[0]
37
- assert_equal Prefab::WeightedValues, value_row.value.weighted_values.class
38
37
  assert_equal 'all-features', Prefab::ConfigValueUnwrapper.unwrap(value_row.value, key, {})
39
38
  end
40
39
 
41
- def test_flag_in_lookup_key
42
- key = :flag_in_lookup_key
43
- value = stringify_keys({ "feature_flag": 'true', value: true,
44
- criterion: { operator: 'LOOKUP_KEY_IN', values: %w[abc123 xyz987] } })
40
+ def test_flag_in_user_key
41
+ key = :flag_in_user_key
42
+ value = stringify_keys({ 'feature_flag': 'true', value: true,
43
+ criterion: { operator: 'PROP_IS_ONE_OF', property: 'user.key', values: %w[abc123 xyz987] } })
45
44
  parsed = Prefab::LocalConfigParser.parse(key, value, {}, FILE_NAME)[key]
46
45
  config = parsed[:config]
47
46
 
@@ -54,11 +53,10 @@ class TestLocalConfigParser < Minitest::Test
54
53
  assert_equal 1, config.rows[0].values[0].criteria.size
55
54
 
56
55
  value_row = config.rows[0].values[0]
57
- assert_equal Prefab::WeightedValues, value_row.value.weighted_values.class
58
56
  assert_equal true, Prefab::ConfigValueUnwrapper.unwrap(value_row.value, key, {})
59
57
 
60
- assert_equal Prefab::CriteriaEvaluator::LOOKUP_KEY, value_row.criteria[0].property_name
61
- assert_equal :LOOKUP_KEY_IN, value_row.criteria[0].operator
58
+ assert_equal 'user.key', value_row.criteria[0].property_name
59
+ assert_equal :PROP_IS_ONE_OF, value_row.criteria[0].operator
62
60
  assert_equal %w[abc123 xyz987], value_row.criteria[0].value_to_match.string_list.values
63
61
  end
64
62
 
@@ -49,13 +49,10 @@ class TestLogPathCollector < Minitest::Test
49
49
  private
50
50
 
51
51
  def new_client(overrides = {})
52
- options = Prefab::Options.new(**{
53
- prefab_config_override_dir: 'none',
54
- prefab_config_classpath_dir: 'test',
55
- prefab_envs: ['unit_tests'],
56
- api_key: '123-development-yourapikey-SDK'
52
+ super(**{
53
+ prefab_datasources: Prefab::Options::DATASOURCES::ALL,
54
+ api_key: '123-development-yourapikey-SDK',
55
+ collect_sync_interval: 1000 # we'll trigger sync manually in our test
57
56
  }.merge(overrides))
58
-
59
- Prefab::Client.new(options)
60
57
  end
61
58
  end
data/test/test_logger.rb CHANGED
@@ -192,7 +192,7 @@ class TestLogger < Minitest::Test
192
192
  Prefab::Criterion.new(
193
193
  operator: Prefab::Criterion::CriterionOperator::PROP_IS_ONE_OF,
194
194
  value_to_match: string_list(['hotmail.com', 'gmail.com']),
195
- property_name: 'email_suffix'
195
+ property_name: 'user.email_suffix'
196
196
  )
197
197
  ],
198
198
  value: Prefab::ConfigValue.new(log_level: WRONG_ENV_VALUE)
@@ -209,7 +209,7 @@ class TestLogger < Minitest::Test
209
209
  Prefab::Criterion.new(
210
210
  operator: Prefab::Criterion::CriterionOperator::PROP_IS_ONE_OF,
211
211
  value_to_match: string_list(['hotmail.com', 'gmail.com']),
212
- property_name: 'email_suffix'
212
+ property_name: 'user.email_suffix'
213
213
  )
214
214
  ],
215
215
  value: Prefab::ConfigValue.new(log_level: DESIRED_VALUE)
@@ -228,7 +228,7 @@ class TestLogger < Minitest::Test
228
228
  inject_project_env_id(prefab, PROJECT_ENV_ID)
229
229
 
230
230
  # without any context, the level should be the default for the env (info)
231
- prefab.with_log_context(nil, {}) do
231
+ prefab.with_context({}) do
232
232
  prefab.log.debug 'Test debug'
233
233
  refute_logged io, 'Test debug'
234
234
 
@@ -242,7 +242,7 @@ class TestLogger < Minitest::Test
242
242
  reset_io(io)
243
243
 
244
244
  # with the wrong context, the level should be the default for the env (info)
245
- prefab.with_log_context('user:1234', email_suffix: 'yahoo.com') do
245
+ prefab.with_context(user: { email_suffix: 'yahoo.com' }) do
246
246
  prefab.log.debug 'Test debug'
247
247
  refute_logged io, 'Test debug'
248
248
 
@@ -256,7 +256,7 @@ class TestLogger < Minitest::Test
256
256
  reset_io(io)
257
257
 
258
258
  # with the correct context, the level should be the desired value (debug)
259
- prefab.with_log_context('user:1234', email_suffix: 'hotmail.com') do
259
+ prefab.with_context(user: { email_suffix: 'hotmail.com' }) do
260
260
  prefab.log.debug 'Test debug'
261
261
  assert_logged io, 'DEBUG', "#{prefix}.test.test_logger.test_logging_with_criteria_on_top_level_key", 'Test debug'
262
262
 
@@ -302,7 +302,7 @@ class TestLogger < Minitest::Test
302
302
  Prefab::Criterion.new(
303
303
  operator: Prefab::Criterion::CriterionOperator::PROP_IS_ONE_OF,
304
304
  value_to_match: string_list(['hotmail.com', 'gmail.com']),
305
- property_name: 'email_suffix'
305
+ property_name: 'user.email_suffix'
306
306
  )
307
307
  ],
308
308
  value: Prefab::ConfigValue.new(log_level: DESIRED_VALUE)
@@ -311,9 +311,9 @@ class TestLogger < Minitest::Test
311
311
  Prefab::ConditionalValue.new(
312
312
  criteria: [
313
313
  Prefab::Criterion.new(
314
- operator: Prefab::Criterion::CriterionOperator::LOOKUP_KEY_IN,
314
+ operator: Prefab::Criterion::CriterionOperator::PROP_IS_ONE_OF,
315
315
  value_to_match: string_list(%w[user:4567]),
316
- property_name: Prefab::CriteriaEvaluator::LOOKUP_KEY
316
+ property_name: 'user.tracking_id'
317
317
  )
318
318
  ],
319
319
  value: Prefab::ConfigValue.new(log_level: DESIRED_VALUE)
@@ -333,7 +333,7 @@ class TestLogger < Minitest::Test
333
333
  inject_project_env_id(prefab, PROJECT_ENV_ID)
334
334
 
335
335
  # without any context, the level should be the default for the env (info)
336
- prefab.with_log_context(nil, {}) do
336
+ prefab.with_context({}) do
337
337
  prefab.log.debug 'Test debug'
338
338
  refute_logged io, 'Test debug'
339
339
 
@@ -347,7 +347,7 @@ class TestLogger < Minitest::Test
347
347
  reset_io(io)
348
348
 
349
349
  # with the wrong context, the level should be the default for the env (info)
350
- prefab.with_log_context('user:1234', email_suffix: 'yahoo.com') do
350
+ prefab.with_context(user: { email_suffix: 'yahoo.com' }) do
351
351
  prefab.log.debug 'Test debug'
352
352
  refute_logged io, 'Test debug'
353
353
 
@@ -361,7 +361,7 @@ class TestLogger < Minitest::Test
361
361
  reset_io(io)
362
362
 
363
363
  # with the correct context, the level should be the desired value (debug)
364
- prefab.with_log_context('user:1234', email_suffix: 'hotmail.com') do
364
+ prefab.with_context(user: { email_suffix: 'hotmail.com' }) do
365
365
  prefab.log.debug 'Test debug'
366
366
  assert_logged io, 'DEBUG', "#{prefix}.test.test_logger.test_logging_with_criteria_on_key_path", 'Test debug'
367
367
 
@@ -375,7 +375,7 @@ class TestLogger < Minitest::Test
375
375
  reset_io(io)
376
376
 
377
377
  # with the correct lookup key
378
- prefab.with_log_context('user:4567', email_suffix: 'example.com') do
378
+ prefab.with_context(user: { tracking_id: 'user:4567' }) do
379
379
  prefab.log.debug 'Test debug'
380
380
  assert_logged io, 'DEBUG', "#{prefix}.test.test_logger.test_logging_with_criteria_on_key_path", 'Test debug'
381
381
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: prefab-cloud-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.23.8
4
+ version: 0.24.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeff Dwyer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-04-21 00:00:00.000000000 Z
11
+ date: 2023-04-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: concurrent-ruby
@@ -197,6 +197,7 @@ files:
197
197
  - lib/prefab/config_loader.rb
198
198
  - lib/prefab/config_resolver.rb
199
199
  - lib/prefab/config_value_unwrapper.rb
200
+ - lib/prefab/context.rb
200
201
  - lib/prefab/criteria_evaluator.rb
201
202
  - lib/prefab/error.rb
202
203
  - lib/prefab/errors/initialization_timeout_error.rb
@@ -213,6 +214,7 @@ files:
213
214
  - lib/prefab/noop_cache.rb
214
215
  - lib/prefab/noop_stats.rb
215
216
  - lib/prefab/options.rb
217
+ - lib/prefab/resolved_config_presenter.rb
216
218
  - lib/prefab/sse_logger.rb
217
219
  - lib/prefab/weighted_value_resolver.rb
218
220
  - lib/prefab/yaml_config_parser.rb
@@ -227,6 +229,7 @@ files:
227
229
  - test/test_config_loader.rb
228
230
  - test/test_config_resolver.rb
229
231
  - test/test_config_value_unwrapper.rb
232
+ - test/test_context.rb
230
233
  - test/test_criteria_evaluator.rb
231
234
  - test/test_exponential_backoff.rb
232
235
  - test/test_feature_flag_client.rb