prefab-cloud-ruby 0.23.8 → 0.24.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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