prefab-cloud-ruby 0.11.0 → 0.12.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -75,32 +75,6 @@ class TestFeatureFlagClient < Minitest::Test
75
75
  @client.evaluate(feature, "hashes low", [], flag, variants)
76
76
  end
77
77
 
78
- def test_user_targets
79
-
80
- feature = "FlagName"
81
- variants = [
82
- Prefab::FeatureFlagVariant.new(string: "inactive"),
83
- Prefab::FeatureFlagVariant.new(string: "user target"),
84
- Prefab::FeatureFlagVariant.new(string: "default"),
85
- ]
86
- flag = Prefab::FeatureFlag.new(
87
- active: true,
88
- inactive_variant_idx: 1,
89
- user_targets: [
90
- variant_idx: 2,
91
- identifiers: ["user:1", "user:3"]
92
- ],
93
- rules: default_ff_rule(3)
94
- )
95
-
96
- assert_equal "user target",
97
- @client.evaluate(feature, "user:1", [], flag, variants)
98
- assert_equal "default",
99
- @client.evaluate(feature, "user:2", [], flag, variants)
100
- assert_equal "user target",
101
- @client.evaluate(feature, "user:3", [], flag, variants)
102
- end
103
-
104
78
  def test_inclusion_rule
105
79
  feature = "FlagName"
106
80
  variants = [
@@ -174,34 +148,46 @@ class TestFeatureFlagClient < Minitest::Test
174
148
  )
175
149
 
176
150
  assert_equal "default",
177
- @client.evaluate(feature, "user:1", {email: "not@example.com"}, flag, variants)
151
+ @client.evaluate(feature, "user:1", { email: "not@example.com" }, flag, variants)
178
152
  assert_equal "default",
179
153
  @client.evaluate(feature, "user:2", {}, flag, variants)
180
154
  assert_equal "rule target",
181
- @client.evaluate(feature, "user:2", {email: "b@example.com"}, flag, variants)
155
+ @client.evaluate(feature, "user:2", { email: "b@example.com" }, flag, variants)
182
156
  assert_equal "rule target",
183
- @client.evaluate(feature, "user:2", {"email" => "b@example.com"}, flag, variants)
157
+ @client.evaluate(feature, "user:2", { "email" => "b@example.com" }, flag, variants)
184
158
 
185
159
  end
186
160
 
187
161
  def test_segment_match?
188
162
  segment = Prefab::Segment.new(
189
- name: "Beta Group",
190
- includes: ["user:1", "user:5"],
191
- excludes: ["user:1", "user:2"]
163
+ criterion: [
164
+ Prefab::Criteria.new(
165
+ operator: "PROP_IS_ONE_OF",
166
+ values: ["a@example.com", "b@example.com"],
167
+ property: "email"
168
+ ),
169
+ Prefab::Criteria.new(
170
+ operator: "LOOKUP_KEY_IN",
171
+ values: ["user:2"]
172
+ )
173
+ ]
192
174
  )
193
175
  assert_equal false, @client.segment_match?(segment, "user:0", {})
194
- assert_equal false, @client.segment_match?(segment, "user:1", {})
195
- assert_equal false, @client.segment_match?(segment, "user:2", {})
196
- assert_equal true, @client.segment_match?(segment, "user:5", {})
176
+ assert_equal true, @client.segment_match?(segment, "user:2", {})
177
+ assert_equal false, @client.segment_match?(segment, "user:1", { email: "no@example.com" })
178
+ assert_equal true, @client.segment_match?(segment, "user:1", { email: "a@example.com" })
197
179
  end
198
180
 
199
181
  def test_segments
200
182
  segment_key = "prefab-segment-beta-group"
201
183
  @mock_base_client.config_client.mock_this_config(segment_key,
202
184
  Prefab::Segment.new(
203
- name: "Beta Group",
204
- includes: ["user:1"]
185
+ criterion: [
186
+ Prefab::Criteria.new(
187
+ operator: Prefab::Criteria::CriteriaOperator::LOOKUP_KEY_IN,
188
+ values: ["user:1"]
189
+ )
190
+ ]
205
191
  )
206
192
  )
207
193
 
@@ -247,17 +233,23 @@ class TestFeatureFlagClient < Minitest::Test
247
233
  segment_key_one = "prefab-segment-segment-1"
248
234
  @mock_base_client.config_client.mock_this_config(segment_key_one,
249
235
  Prefab::Segment.new(
250
- name: "Segment-1",
251
- includes: ["user:1", "user:2"],
252
- excludes: ["user:3"]
236
+ criterion: [
237
+ Prefab::Criteria.new(
238
+ operator: Prefab::Criteria::CriteriaOperator::LOOKUP_KEY_IN,
239
+ values: ["user:1", "user:2"]
240
+ )
241
+ ]
253
242
  )
254
243
  )
255
244
  segment_key_two = "prefab-segment-segment-2"
256
245
  @mock_base_client.config_client.mock_this_config(segment_key_two,
257
246
  Prefab::Segment.new(
258
- name: "Segment-2",
259
- includes: ["user:3", "user:4"],
260
- excludes: ["user:2"]
247
+ criterion: [
248
+ Prefab::Criteria.new(
249
+ operator: Prefab::Criteria::CriteriaOperator::LOOKUP_KEY_IN,
250
+ values: ["user:3", "user:4"]
251
+ )
252
+ ]
261
253
  )
262
254
  )
263
255
 
@@ -288,7 +280,8 @@ class TestFeatureFlagClient < Minitest::Test
288
280
  variant_idx: 3)
289
281
  ]
290
282
  )
291
- ]
283
+
284
+ ],
292
285
  )
293
286
 
294
287
  assert_equal "rule target",
data/test/test_helper.rb CHANGED
@@ -5,12 +5,12 @@ class MockBaseClient
5
5
  STAGING_ENV_ID = 1
6
6
  PRODUCTION_ENV_ID = 2
7
7
  TEST_ENV_ID = 3
8
- attr_reader :namespace, :logger, :config_client
9
-
10
- def initialize(namespace: "")
8
+ attr_reader :namespace, :logger, :config_client, :options
11
9
 
10
+ def initialize(options = Prefab::Options.new)
11
+ @options = options
12
12
  @namespace = namespace
13
- @logger = Logger.new($stdout)
13
+ @logger = Prefab::LoggerClient.new($stdout)
14
14
  @config_client = MockConfigClient.new
15
15
  end
16
16
 
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.11.0
4
+ version: 0.12.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: 2022-05-05 00:00:00.000000000 Z
11
+ date: 2022-07-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: concurrent-ruby
@@ -225,10 +225,13 @@ files:
225
225
  - lib/prefab/config_loader.rb
226
226
  - lib/prefab/config_resolver.rb
227
227
  - lib/prefab/feature_flag_client.rb
228
+ - lib/prefab/internal_logger.rb
228
229
  - lib/prefab/logger_client.rb
229
230
  - lib/prefab/murmer3.rb
230
231
  - lib/prefab/noop_cache.rb
231
232
  - lib/prefab/noop_stats.rb
233
+ - lib/prefab/options.rb
234
+ - lib/prefab/prefab.rb
232
235
  - lib/prefab/ratelimit_client.rb
233
236
  - lib/prefab_pb.rb
234
237
  - lib/prefab_services_pb.rb
@@ -236,6 +239,7 @@ files:
236
239
  - run_test_harness_server.sh
237
240
  - test/.prefab.test.config.yaml
238
241
  - test/harness_server.rb
242
+ - test/test_config_client.rb
239
243
  - test/test_config_loader.rb
240
244
  - test/test_config_resolver.rb
241
245
  - test/test_feature_flag_client.rb