quonfig 0.0.9 → 0.0.11
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +43 -0
- data/README.md +4 -4
- data/lib/quonfig/evaluation_details.rb +60 -0
- data/lib/quonfig/options.rb +37 -16
- data/lib/quonfig/sse_config_client.rb +1 -1
- data/lib/quonfig/version.rb +5 -0
- data/lib/quonfig.rb +2 -1
- data/quonfig.gemspec +30 -163
- metadata +29 -182
- data/.claude/rules/constitution.md +0 -81
- data/.claude/rules/git-safety.md +0 -11
- data/.claude/rules/issue-tracking.md +0 -13
- data/.claude/rules/testing-workflow.md +0 -28
- data/.envrc.sample +0 -3
- data/.github/CODEOWNERS +0 -2
- data/.github/pull_request_template.md +0 -8
- data/.github/workflows/release.yml +0 -49
- data/.github/workflows/ruby.yml +0 -60
- data/.github/workflows/test.yaml +0 -40
- data/.rubocop.yml +0 -13
- data/.tool-versions +0 -1
- data/CLAUDE.md +0 -29
- data/CODEOWNERS +0 -1
- data/Gemfile +0 -26
- data/Gemfile.lock +0 -177
- data/Rakefile +0 -64
- data/VERSION +0 -1
- data/dev/allocation_stats +0 -60
- data/dev/benchmark +0 -40
- data/dev/console +0 -12
- data/dev/script_setup.rb +0 -18
- data/test/fixtures/datafile.json +0 -87
- data/test/integration/test_context_precedence.rb +0 -112
- data/test/integration/test_datadir_environment.rb +0 -54
- data/test/integration/test_dev_overrides.rb +0 -40
- data/test/integration/test_enabled.rb +0 -478
- data/test/integration/test_enabled_with_contexts.rb +0 -64
- data/test/integration/test_get.rb +0 -136
- data/test/integration/test_get_feature_flag.rb +0 -28
- data/test/integration/test_get_or_raise.rb +0 -60
- data/test/integration/test_get_weighted_values.rb +0 -34
- data/test/integration/test_helpers.rb +0 -667
- data/test/integration/test_helpers_test.rb +0 -73
- data/test/integration/test_post.rb +0 -44
- data/test/integration/test_telemetry.rb +0 -170
- data/test/support/common_helpers.rb +0 -106
- data/test/support/mock_base_client.rb +0 -27
- data/test/support/mock_config_loader.rb +0 -1
- data/test/test_bound_client.rb +0 -109
- data/test/test_caching_http_connection.rb +0 -218
- data/test/test_client.rb +0 -255
- data/test/test_client_network_mode.rb +0 -136
- data/test/test_client_telemetry.rb +0 -175
- data/test/test_config_loader.rb +0 -70
- data/test/test_context.rb +0 -139
- data/test/test_context_shape.rb +0 -37
- data/test/test_context_shape_aggregator.rb +0 -126
- data/test/test_datadir.rb +0 -203
- data/test/test_dev_context.rb +0 -163
- data/test/test_duration.rb +0 -37
- data/test/test_encryption.rb +0 -16
- data/test/test_evaluation_summaries_aggregator.rb +0 -180
- data/test/test_evaluator.rb +0 -285
- data/test/test_example_contexts_aggregator.rb +0 -119
- data/test/test_exponential_backoff.rb +0 -44
- data/test/test_fixed_size_hash.rb +0 -119
- data/test/test_helper.rb +0 -17
- data/test/test_http_connection.rb +0 -79
- data/test/test_internal_logger.rb +0 -34
- data/test/test_options.rb +0 -167
- data/test/test_rate_limit_cache.rb +0 -44
- data/test/test_reason.rb +0 -79
- data/test/test_rename.rb +0 -65
- data/test/test_resolver.rb +0 -291
- data/test/test_semantic_logger_filter.rb +0 -144
- data/test/test_semver.rb +0 -108
- data/test/test_should_log.rb +0 -186
- data/test/test_sse_config_client.rb +0 -297
- data/test/test_stdlib_formatter.rb +0 -195
- data/test/test_telemetry_reporter.rb +0 -209
- data/test/test_typed_getters.rb +0 -131
- data/test/test_types.rb +0 -141
- data/test/test_weighted_value_resolver.rb +0 -84
|
@@ -1,478 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
#
|
|
3
|
-
# AUTO-GENERATED from integration-test-data/tests/eval/enabled.yaml.
|
|
4
|
-
# Regenerate with:
|
|
5
|
-
# cd integration-test-data/generators && npm run generate -- --target=ruby
|
|
6
|
-
# Source: integration-test-data/generators/src/targets/ruby.ts
|
|
7
|
-
# Do NOT edit by hand — changes will be overwritten.
|
|
8
|
-
|
|
9
|
-
require 'test_helper'
|
|
10
|
-
require 'integration/test_helpers'
|
|
11
|
-
|
|
12
|
-
class TestEnabled < Minitest::Test
|
|
13
|
-
def setup
|
|
14
|
-
@store = IntegrationTestHelpers.build_store("enabled")
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
# returns the correct value for a simple flag
|
|
18
|
-
def test_returns_the_correct_value_for_a_simple_flag
|
|
19
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
20
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.simple", {}, true)
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
# always returns false for a non-boolean flag
|
|
24
|
-
def test_always_returns_false_for_a_non_boolean_flag
|
|
25
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
26
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.integer", {}, false)
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
# returns true for a PROP_IS_ONE_OF rule when any prop matches
|
|
30
|
-
def test_returns_true_for_a_prop_is_one_of_rule_when_any_prop_matches
|
|
31
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
32
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.properties.positive", {"" => {"name" => "michael", "domain" => "something.com"}}, true)
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
# returns false for a PROP_IS_ONE_OF rule when no prop matches
|
|
36
|
-
def test_returns_false_for_a_prop_is_one_of_rule_when_no_prop_matches
|
|
37
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
38
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.properties.positive", {"" => {"name" => "lauren", "domain" => "something.com"}}, false)
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
# returns true for a PROP_IS_NOT_ONE_OF rule when any prop doesn't match
|
|
42
|
-
def test_returns_true_for_a_prop_is_not_one_of_rule_when_any_prop_doesn_t_match
|
|
43
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
44
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.properties.negative", {"" => {"name" => "lauren", "domain" => "prefab.cloud"}}, true)
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
# returns false for a PROP_IS_NOT_ONE_OF rule when all props match
|
|
48
|
-
def test_returns_false_for_a_prop_is_not_one_of_rule_when_all_props_match
|
|
49
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
50
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.properties.negative", {"" => {"name" => "michael", "domain" => "prefab.cloud"}}, false)
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
# returns true for PROP_ENDS_WITH_ONE_OF rule when the given prop has a matching suffix
|
|
54
|
-
def test_returns_true_for_prop_ends_with_one_of_rule_when_the_given_prop_has_a_matching_suffix
|
|
55
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
56
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.ends-with-one-of.positive", {"" => {"email" => "jeff@prefab.cloud"}}, true)
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
# returns false for PROP_ENDS_WITH_ONE_OF rule when the given prop doesn't have a matching suffix
|
|
60
|
-
def test_returns_false_for_prop_ends_with_one_of_rule_when_the_given_prop_doesn_t_have_a_matching_suffix
|
|
61
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
62
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.ends-with-one-of.positive", {"" => {"email" => "jeff@test.com"}}, false)
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
# returns true for PROP_DOES_NOT_END_WITH_ONE_OF rule when the given prop doesn't have a matching suffix
|
|
66
|
-
def test_returns_true_for_prop_does_not_end_with_one_of_rule_when_the_given_prop_doesn_t_have_a_matching_suffix
|
|
67
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
68
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.ends-with-one-of.negative", {"" => {"email" => "michael@test.com"}}, true)
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
# returns false for PROP_DOES_NOT_END_WITH_ONE_OF rule when the given prop has a matching suffix
|
|
72
|
-
def test_returns_false_for_prop_does_not_end_with_one_of_rule_when_the_given_prop_has_a_matching_suffix
|
|
73
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
74
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.ends-with-one-of.negative", {"" => {"email" => "michael@prefab.cloud"}}, false)
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
# returns true for PROP_STARTS_WITH_ONE_OF rule when the given prop has a matching prefix
|
|
78
|
-
def test_returns_true_for_prop_starts_with_one_of_rule_when_the_given_prop_has_a_matching_prefix
|
|
79
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
80
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.starts-with-one-of.positive", {"user" => {"email" => "foo@prefab.cloud"}}, true)
|
|
81
|
-
end
|
|
82
|
-
|
|
83
|
-
# returns false for PROP_STARTS_WITH_ONE_OF rule when the given prop doesn't have a matching prefix
|
|
84
|
-
def test_returns_false_for_prop_starts_with_one_of_rule_when_the_given_prop_doesn_t_have_a_matching_prefix
|
|
85
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
86
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.starts-with-one-of.positive", {"user" => {"email" => "notfoo@prefab.cloud"}}, false)
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
# returns true for PROP_DOES_NOT_START_WITH_ONE_OF rule when the given prop doesn't have a matching prefix
|
|
90
|
-
def test_returns_true_for_prop_does_not_start_with_one_of_rule_when_the_given_prop_doesn_t_have_a_matching_prefix
|
|
91
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
92
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.starts-with-one-of.negative", {"user" => {"email" => "notfoo@prefab.cloud"}}, true)
|
|
93
|
-
end
|
|
94
|
-
|
|
95
|
-
# returns false for PROP_DOES_NOT_START_WITH_ONE_OF rule when the given prop has a matching prefix
|
|
96
|
-
def test_returns_false_for_prop_does_not_start_with_one_of_rule_when_the_given_prop_has_a_matching_prefix
|
|
97
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
98
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.starts-with-one-of.negative", {"user" => {"email" => "foo@prefab.cloud"}}, false)
|
|
99
|
-
end
|
|
100
|
-
|
|
101
|
-
# returns true for PROP_CONTAINS_ONE_OF rule when the given prop has a matching substring
|
|
102
|
-
def test_returns_true_for_prop_contains_one_of_rule_when_the_given_prop_has_a_matching_substring
|
|
103
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
104
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.contains-one-of.positive", {"user" => {"email" => "somefoo@prefab.cloud"}}, true)
|
|
105
|
-
end
|
|
106
|
-
|
|
107
|
-
# returns false for PROP_CONTAINS_ONE_OF rule when the given prop doesn't have a matching substring
|
|
108
|
-
def test_returns_false_for_prop_contains_one_of_rule_when_the_given_prop_doesn_t_have_a_matching_substring
|
|
109
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
110
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.contains-one-of.positive", {"user" => {"email" => "info@prefab.cloud"}}, false)
|
|
111
|
-
end
|
|
112
|
-
|
|
113
|
-
# returns true for PROP_DOES_NOT_CONTAIN_ONE_OF rule when the given prop doesn't have a matching substring
|
|
114
|
-
def test_returns_true_for_prop_does_not_contain_one_of_rule_when_the_given_prop_doesn_t_have_a_matching_substring
|
|
115
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
116
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.contains-one-of.negative", {"user" => {"email" => "info@prefab.cloud"}}, true)
|
|
117
|
-
end
|
|
118
|
-
|
|
119
|
-
# returns false for PROP_DOES_NOT_CONTAIN_ONE_OF rule when the given prop has a matching substring
|
|
120
|
-
def test_returns_false_for_prop_does_not_contain_one_of_rule_when_the_given_prop_has_a_matching_substring
|
|
121
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
122
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.contains-one-of.negative", {"user" => {"email" => "notfoo@prefab.cloud"}}, false)
|
|
123
|
-
end
|
|
124
|
-
|
|
125
|
-
# returns true for IN_SEG when the segment rule matches
|
|
126
|
-
def test_returns_true_for_in_seg_when_the_segment_rule_matches
|
|
127
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
128
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.in-segment.positive", {"user" => {"key" => "lauren"}}, true)
|
|
129
|
-
end
|
|
130
|
-
|
|
131
|
-
# returns false for IN_SEG when the segment rule doesn't match
|
|
132
|
-
def test_returns_false_for_in_seg_when_the_segment_rule_doesn_t_match
|
|
133
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
134
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.in-segment.positive", {"user" => {"key" => "josh"}}, false)
|
|
135
|
-
end
|
|
136
|
-
|
|
137
|
-
# returns false for IN_SEG if any segment rule fails to match
|
|
138
|
-
def test_returns_false_for_in_seg_if_any_segment_rule_fails_to_match
|
|
139
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
140
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.in-seg.segment-and", {"user" => {"key" => "josh"}, "" => {"domain" => "prefab.cloud"}}, false)
|
|
141
|
-
end
|
|
142
|
-
|
|
143
|
-
# returns true for IN_SEG (segment-and) if all rules matches
|
|
144
|
-
def test_returns_true_for_in_seg_segment_and_if_all_rules_matches
|
|
145
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
146
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.in-seg.segment-and", {"user" => {"key" => "michael"}, "" => {"domain" => "prefab.cloud"}}, true)
|
|
147
|
-
end
|
|
148
|
-
|
|
149
|
-
# returns true for IN_SEG (segment-or) if any segment rule matches (lookup)
|
|
150
|
-
def test_returns_true_for_in_seg_segment_or_if_any_segment_rule_matches_lookup
|
|
151
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
152
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.in-seg.segment-or", {"user" => {"key" => "michael"}, "" => {"domain" => "example.com"}}, true)
|
|
153
|
-
end
|
|
154
|
-
|
|
155
|
-
# returns true for IN_SEG (segment-or) if any segment rule matches (prop)
|
|
156
|
-
def test_returns_true_for_in_seg_segment_or_if_any_segment_rule_matches_prop
|
|
157
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
158
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.in-seg.segment-or", {"user" => {"key" => "nobody"}, "" => {"domain" => "gmail.com"}}, true)
|
|
159
|
-
end
|
|
160
|
-
|
|
161
|
-
# returns true for NOT_IN_SEG when the segment rule doesn't match
|
|
162
|
-
def test_returns_true_for_not_in_seg_when_the_segment_rule_doesn_t_match
|
|
163
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
164
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.in-segment.negative", {"user" => {"key" => "josh"}}, true)
|
|
165
|
-
end
|
|
166
|
-
|
|
167
|
-
# returns false for NOT_IN_SEG when the segment rule matches
|
|
168
|
-
def test_returns_false_for_not_in_seg_when_the_segment_rule_matches
|
|
169
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
170
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.in-segment.negative", {"user" => {"key" => "michael"}}, false)
|
|
171
|
-
end
|
|
172
|
-
|
|
173
|
-
# returns false for NOT_IN_SEG if any segment rule matches
|
|
174
|
-
def test_returns_false_for_not_in_seg_if_any_segment_rule_matches
|
|
175
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
176
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.in-segment.multiple-criteria.negative", {"user" => {"key" => "josh"}, "" => {"domain" => "prefab.cloud"}}, true)
|
|
177
|
-
end
|
|
178
|
-
|
|
179
|
-
# returns true for NOT_IN_SEG if no segment rule matches
|
|
180
|
-
def test_returns_true_for_not_in_seg_if_no_segment_rule_matches
|
|
181
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
182
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.in-segment.multiple-criteria.negative", {"user" => {"key" => "josh"}, "" => {"domain" => "something.com"}}, true)
|
|
183
|
-
end
|
|
184
|
-
|
|
185
|
-
# returns true for NOT_IN_SEG (segment-and) if not segment rule fails to match
|
|
186
|
-
def test_returns_true_for_not_in_seg_segment_and_if_not_segment_rule_fails_to_match
|
|
187
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
188
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.not-in-seg.segment-and", {"user" => {"key" => "josh"}, "" => {"domain" => "prefab.cloud"}}, true)
|
|
189
|
-
end
|
|
190
|
-
|
|
191
|
-
# returns true for IN_SEG (segment-and) if not segment rule fails to match
|
|
192
|
-
def test_returns_true_for_in_seg_segment_and_if_not_segment_rule_fails_to_match
|
|
193
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
194
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.in-seg.segment-and", {"user" => {"key" => "josh"}, "" => {"domain" => "prefab.cloud"}}, false)
|
|
195
|
-
end
|
|
196
|
-
|
|
197
|
-
# returns false for NOT_IN_SEG (segment-and) if segment rules matches
|
|
198
|
-
def test_returns_false_for_not_in_seg_segment_and_if_segment_rules_matches
|
|
199
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
200
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.not-in-seg.segment-and", {"user" => {"key" => "michael"}, "" => {"domain" => "prefab.cloud"}}, false)
|
|
201
|
-
end
|
|
202
|
-
|
|
203
|
-
# returns true for NOT_IN_SEG (segment-or) if no segment rule matches
|
|
204
|
-
def test_returns_true_for_not_in_seg_segment_or_if_no_segment_rule_matches
|
|
205
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
206
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.not-in-seg.segment-or", {"user" => {"key" => "nobody"}, "" => {"domain" => "example.com"}}, true)
|
|
207
|
-
end
|
|
208
|
-
|
|
209
|
-
# returns false for NOT_IN_SEG (segment-or) if one segment rule matches (prop)
|
|
210
|
-
def test_returns_false_for_not_in_seg_segment_or_if_one_segment_rule_matches_prop
|
|
211
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
212
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.not-in-seg.segment-or", {"user" => {"key" => "nobody"}, "" => {"domain" => "gmail.com"}}, false)
|
|
213
|
-
end
|
|
214
|
-
|
|
215
|
-
# returns false for NOT_IN_SEG (segment-or) if one segment rule matches (lookup)
|
|
216
|
-
def test_returns_false_for_not_in_seg_segment_or_if_one_segment_rule_matches_lookup
|
|
217
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
218
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.not-in-seg.segment-or", {"user" => {"key" => "michael"}, "" => {"domain" => "example.com"}}, false)
|
|
219
|
-
end
|
|
220
|
-
|
|
221
|
-
# returns true for PROP_BEFORE rule when the given prop represents a date (string) before the rule's time
|
|
222
|
-
def test_returns_true_for_prop_before_rule_when_the_given_prop_represents_a_date_string_before_the_rule_s_time
|
|
223
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
224
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.before", {"user" => {"creation_date" => "2024-11-01T00:00:00Z"}}, true)
|
|
225
|
-
end
|
|
226
|
-
|
|
227
|
-
# returns true for PROP_BEFORE rule when the given prop represents a date (number) before the rule's time
|
|
228
|
-
def test_returns_true_for_prop_before_rule_when_the_given_prop_represents_a_date_number_before_the_rule_s_time
|
|
229
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
230
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.before", {"user" => {"creation_date" => 1730419200000}}, true)
|
|
231
|
-
end
|
|
232
|
-
|
|
233
|
-
# returns false for PROP_BEFORE rule when the given prop represents a date (number) exactly matching rule's time
|
|
234
|
-
def test_returns_false_for_prop_before_rule_when_the_given_prop_represents_a_date_number_exactly_matching_rule_s_time
|
|
235
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
236
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.before", {"user" => {"creation_date" => 1733011200000}}, false)
|
|
237
|
-
end
|
|
238
|
-
|
|
239
|
-
# returns false for PROP_BEFORE rule when the given prop represents a date (number) AFTER the rule's time
|
|
240
|
-
def test_returns_false_for_prop_before_rule_when_the_given_prop_represents_a_date_number_after_the_rule_s_time
|
|
241
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
242
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.before", {"user" => {"creation_date" => "2025-01-01T00:00:00Z"}}, false)
|
|
243
|
-
end
|
|
244
|
-
|
|
245
|
-
# returns false for PROP_BEFORE rule when the given prop won't parse as a date
|
|
246
|
-
def test_returns_false_for_prop_before_rule_when_the_given_prop_won_t_parse_as_a_date
|
|
247
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
248
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.before", {"user" => {"creation_date" => "not a date"}}, false)
|
|
249
|
-
end
|
|
250
|
-
|
|
251
|
-
# returns false for PROP_BEFORE rule using current-time relative to 2050-01-01
|
|
252
|
-
def test_returns_false_for_prop_before_rule_using_current_time_relative_to_2050_01_01
|
|
253
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
254
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.before.current-time", {}, true)
|
|
255
|
-
end
|
|
256
|
-
|
|
257
|
-
# returns true for PROP_AFTER rule when the given prop represents a date (string) after the rule's time
|
|
258
|
-
def test_returns_true_for_prop_after_rule_when_the_given_prop_represents_a_date_string_after_the_rule_s_time
|
|
259
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
260
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.after", {"user" => {"creation_date" => "2025-01-01T00:00:00Z"}}, true)
|
|
261
|
-
end
|
|
262
|
-
|
|
263
|
-
# returns true for PROP_AFTER rule when the given prop represents a date (number) after the rule's time
|
|
264
|
-
def test_returns_true_for_prop_after_rule_when_the_given_prop_represents_a_date_number_after_the_rule_s_time
|
|
265
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
266
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.after", {"user" => {"creation_date" => 1735689600000}}, true)
|
|
267
|
-
end
|
|
268
|
-
|
|
269
|
-
# returns false for PROP_AFTER rule when the given prop represents a date (number) exactly matching rule's time
|
|
270
|
-
def test_returns_false_for_prop_after_rule_when_the_given_prop_represents_a_date_number_exactly_matching_rule_s_time
|
|
271
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
272
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.after", {"user" => {"creation_date" => 1733011200000}}, false)
|
|
273
|
-
end
|
|
274
|
-
|
|
275
|
-
# returns false for PROP_BEFORE rule when the given prop represents a date (number) BEFORE the rule's time
|
|
276
|
-
def test_returns_false_for_prop_before_rule_when_the_given_prop_represents_a_date_number_before_the_rule_s_time
|
|
277
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
278
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.after", {"user" => {"creation_date" => "2024-01-01T00:00:00Z"}}, false)
|
|
279
|
-
end
|
|
280
|
-
|
|
281
|
-
# returns false for PROP_AFTER rule when the given prop won't parse as a date
|
|
282
|
-
def test_returns_false_for_prop_after_rule_when_the_given_prop_won_t_parse_as_a_date
|
|
283
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
284
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.after", {"user" => {"creation_date" => "not a date"}}, false)
|
|
285
|
-
end
|
|
286
|
-
|
|
287
|
-
# returns false for PROP_AFTER rule using current-time relative to 2025-01-01
|
|
288
|
-
def test_returns_false_for_prop_after_rule_using_current_time_relative_to_2025_01_01
|
|
289
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
290
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.after.current-time", {}, true)
|
|
291
|
-
end
|
|
292
|
-
|
|
293
|
-
# returns true for PROP_LESS_THAN rule when the given prop is less than the rule's value
|
|
294
|
-
def test_returns_true_for_prop_less_than_rule_when_the_given_prop_is_less_than_the_rule_s_value
|
|
295
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
296
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.less-than", {"user" => {"age" => 20}}, true)
|
|
297
|
-
end
|
|
298
|
-
|
|
299
|
-
# returns true for PROP_LESS_THAN rule when the given prop is less than the rule's value (float)
|
|
300
|
-
def test_returns_true_for_prop_less_than_rule_when_the_given_prop_is_less_than_the_rule_s_value_float
|
|
301
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
302
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.less-than", {"user" => {"age" => 20.5}}, true)
|
|
303
|
-
end
|
|
304
|
-
|
|
305
|
-
# returns false for PROP_LESS_THAN rule when the given prop is equal to rule's value
|
|
306
|
-
def test_returns_false_for_prop_less_than_rule_when_the_given_prop_is_equal_to_rule_s_value
|
|
307
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
308
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.less-than", {"user" => {"age" => 30}}, false)
|
|
309
|
-
end
|
|
310
|
-
|
|
311
|
-
# returns false for PROP_LESS_THAN rule when the given prop a string
|
|
312
|
-
def test_returns_false_for_prop_less_than_rule_when_the_given_prop_a_string
|
|
313
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
314
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.less-than", {"user" => {"age" => "20"}}, false)
|
|
315
|
-
end
|
|
316
|
-
|
|
317
|
-
# returns true for PROP_LESS_THAN_OR_EQUAL rule when the given prop is less than the rule's value
|
|
318
|
-
def test_returns_true_for_prop_less_than_or_equal_rule_when_the_given_prop_is_less_than_the_rule_s_value
|
|
319
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
320
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.less-than-or-equal", {"user" => {"age" => 20}}, true)
|
|
321
|
-
end
|
|
322
|
-
|
|
323
|
-
# returns true for PROP_LESS_THAN_OR_EQUAL rule when the given prop is less than the rule's value (float)
|
|
324
|
-
def test_returns_true_for_prop_less_than_or_equal_rule_when_the_given_prop_is_less_than_the_rule_s_value_float
|
|
325
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
326
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.less-than-or-equal", {"user" => {"age" => 20.5}}, true)
|
|
327
|
-
end
|
|
328
|
-
|
|
329
|
-
# returns false for PROP_LESS_THAN_OR_EQUAL rule when the given prop is equal to rule's value
|
|
330
|
-
def test_returns_false_for_prop_less_than_or_equal_rule_when_the_given_prop_is_equal_to_rule_s_value
|
|
331
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
332
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.less-than-or-equal", {"user" => {"age" => 30}}, true)
|
|
333
|
-
end
|
|
334
|
-
|
|
335
|
-
# returns false for PROP_LESS_THAN_OR_EQUAL rule when the given prop a string
|
|
336
|
-
def test_returns_false_for_prop_less_than_or_equal_rule_when_the_given_prop_a_string
|
|
337
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
338
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.less-than-or-equal", {"user" => {"age" => "20"}}, false)
|
|
339
|
-
end
|
|
340
|
-
|
|
341
|
-
# returns true for PROP_GREATER_THAN rule when the given prop is greater than the rule's value
|
|
342
|
-
def test_returns_true_for_prop_greater_than_rule_when_the_given_prop_is_greater_than_the_rule_s_value
|
|
343
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
344
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.greater-than", {"user" => {"age" => 100}}, true)
|
|
345
|
-
end
|
|
346
|
-
|
|
347
|
-
# returns true for PROP_GREATER_THAN rule when the given prop is greater than the rule's value (float)
|
|
348
|
-
def test_returns_true_for_prop_greater_than_rule_when_the_given_prop_is_greater_than_the_rule_s_value_float
|
|
349
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
350
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.greater-than", {"user" => {"age" => 30.5}}, true)
|
|
351
|
-
end
|
|
352
|
-
|
|
353
|
-
# returns true for PROP_GREATER_THAN rule when the given prop is greater than the rule's float value (float)
|
|
354
|
-
def test_returns_true_for_prop_greater_than_rule_when_the_given_prop_is_greater_than_the_rule_s_float_value_float
|
|
355
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
356
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.greater-than.double", {"user" => {"age" => 32.7}}, true)
|
|
357
|
-
end
|
|
358
|
-
|
|
359
|
-
# returns true for PROP_GREATER_THAN rule when the given prop is greater than the rule's float value (integer)
|
|
360
|
-
def test_returns_true_for_prop_greater_than_rule_when_the_given_prop_is_greater_than_the_rule_s_float_value_integer
|
|
361
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
362
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.greater-than.double", {"user" => {"age" => 32}}, true)
|
|
363
|
-
end
|
|
364
|
-
|
|
365
|
-
# returns false for PROP_GREATER_THAN rule when the given prop is equal to rule's value
|
|
366
|
-
def test_returns_false_for_prop_greater_than_rule_when_the_given_prop_is_equal_to_rule_s_value
|
|
367
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
368
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.greater-than", {"user" => {"age" => 30}}, false)
|
|
369
|
-
end
|
|
370
|
-
|
|
371
|
-
# returns false for PROP_GREATER_THAN rule when the given prop a string
|
|
372
|
-
def test_returns_false_for_prop_greater_than_rule_when_the_given_prop_a_string
|
|
373
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
374
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.greater-than", {"user" => {"age" => "100"}}, false)
|
|
375
|
-
end
|
|
376
|
-
|
|
377
|
-
# returns true for PROP_GREATER_THAN_OR_EQUAL rule when the given prop is greater than the rule's value
|
|
378
|
-
def test_returns_true_for_prop_greater_than_or_equal_rule_when_the_given_prop_is_greater_than_the_rule_s_value
|
|
379
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
380
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.greater-than-or-equal", {"user" => {"age" => 30}}, true)
|
|
381
|
-
end
|
|
382
|
-
|
|
383
|
-
# returns true for PROP_GREATER_THAN_OR_EQUAL rule when the given prop is greater than the rule's value (float)
|
|
384
|
-
def test_returns_true_for_prop_greater_than_or_equal_rule_when_the_given_prop_is_greater_than_the_rule_s_value_float
|
|
385
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
386
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.greater-than-or-equal", {"user" => {"age" => 30.5}}, true)
|
|
387
|
-
end
|
|
388
|
-
|
|
389
|
-
# returns true for PROP_GREATER_THAN_OR_EQUAL rule when the given prop is equal to rule's value
|
|
390
|
-
def test_returns_true_for_prop_greater_than_or_equal_rule_when_the_given_prop_is_equal_to_rule_s_value
|
|
391
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
392
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.greater-than-or-equal", {"user" => {"age" => 30}}, true)
|
|
393
|
-
end
|
|
394
|
-
|
|
395
|
-
# returns false for PROP_GREATER_THAN_OR_EQUAL rule when the given prop a string
|
|
396
|
-
def test_returns_false_for_prop_greater_than_or_equal_rule_when_the_given_prop_a_string
|
|
397
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
398
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.greater-than-or-equal", {"user" => {"age" => "100"}}, false)
|
|
399
|
-
end
|
|
400
|
-
|
|
401
|
-
# returns true for PROP_MATCHES rule when the given prop matches the regex
|
|
402
|
-
def test_returns_true_for_prop_matches_rule_when_the_given_prop_matches_the_regex
|
|
403
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
404
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.matches", {"user" => {"code" => "aaaaaab"}}, true)
|
|
405
|
-
end
|
|
406
|
-
|
|
407
|
-
# returns false for PROP_MATCHES rule when the given prop does not match the regex
|
|
408
|
-
def test_returns_false_for_prop_matches_rule_when_the_given_prop_does_not_match_the_regex
|
|
409
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
410
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.matches", {"user" => {"code" => "aa"}}, false)
|
|
411
|
-
end
|
|
412
|
-
|
|
413
|
-
# returns true for PROP_DOES_NOT_MATCH rule when the given prop does not match the regex
|
|
414
|
-
def test_returns_true_for_prop_does_not_match_rule_when_the_given_prop_does_not_match_the_regex
|
|
415
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
416
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.does-not-match", {"user" => {"code" => "b"}}, true)
|
|
417
|
-
end
|
|
418
|
-
|
|
419
|
-
# returns false for PROP_DOES_NOT_MATCH rule when the given prop matches the regex
|
|
420
|
-
def test_returns_false_for_prop_does_not_match_rule_when_the_given_prop_matches_the_regex
|
|
421
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
422
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.does-not-match", {"user" => {"code" => "aabb"}}, false)
|
|
423
|
-
end
|
|
424
|
-
|
|
425
|
-
# returns true for PROP_SEMVER_EQUAL rule when the given prop equals the version
|
|
426
|
-
def test_returns_true_for_prop_semver_equal_rule_when_the_given_prop_equals_the_version
|
|
427
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
428
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.semver-equal", {"app" => {"version" => "2.0.0"}}, true)
|
|
429
|
-
end
|
|
430
|
-
|
|
431
|
-
# returns false for PROP_SEMVER_EQUAL rule when the given prop does not equal the version
|
|
432
|
-
def test_returns_false_for_prop_semver_equal_rule_when_the_given_prop_does_not_equal_the_version
|
|
433
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
434
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.semver-equal", {"app" => {"version" => "2.0.1"}}, false)
|
|
435
|
-
end
|
|
436
|
-
|
|
437
|
-
# returns false for PROP_SEMVER_EQUAL rule when the given prop is not a valid semver
|
|
438
|
-
def test_returns_false_for_prop_semver_equal_rule_when_the_given_prop_is_not_a_valid_semver
|
|
439
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
440
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.semver-equal", {"app" => {"version" => "2.0"}}, false)
|
|
441
|
-
end
|
|
442
|
-
|
|
443
|
-
# returns true for PROP_SEMVER_LESS_THAN rule when the given prop is less than 2.0.0
|
|
444
|
-
def test_returns_true_for_prop_semver_less_than_rule_when_the_given_prop_is_less_than_2_0_0
|
|
445
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
446
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.semver-less-than", {"app" => {"version" => "1.5.1"}}, true)
|
|
447
|
-
end
|
|
448
|
-
|
|
449
|
-
# returns false for PROP_SEMVER_LESS_THAN rule when the given prop equals the version
|
|
450
|
-
def test_returns_false_for_prop_semver_less_than_rule_when_the_given_prop_equals_the_version
|
|
451
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
452
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.semver-less-than", {"app" => {"version" => "2.0.0"}}, false)
|
|
453
|
-
end
|
|
454
|
-
|
|
455
|
-
# returns false for PROP_SEMVER_LESS_THAN rule when the given prop is greater than the version
|
|
456
|
-
def test_returns_false_for_prop_semver_less_than_rule_when_the_given_prop_is_greater_than_the_version
|
|
457
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
458
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.semver-less-than", {"app" => {"version" => "2.2.1"}}, false)
|
|
459
|
-
end
|
|
460
|
-
|
|
461
|
-
# returns true for PROP_SEMVER_GREATER_THAN rule when the given prop is greater than 2.0.0
|
|
462
|
-
def test_returns_true_for_prop_semver_greater_than_rule_when_the_given_prop_is_greater_than_2_0_0
|
|
463
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
464
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.semver-greater-than", {"app" => {"version" => "2.5.1"}}, true)
|
|
465
|
-
end
|
|
466
|
-
|
|
467
|
-
# returns false for PROP_SEMVER_GREATER_THAN rule when the given prop equals the version
|
|
468
|
-
def test_returns_false_for_prop_semver_greater_than_rule_when_the_given_prop_equals_the_version
|
|
469
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
470
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.semver-greater-than", {"app" => {"version" => "2.0.0"}}, false)
|
|
471
|
-
end
|
|
472
|
-
|
|
473
|
-
# returns false for PROP_SEMVER_EQUAL rule when the given prop is less than the version
|
|
474
|
-
def test_returns_false_for_prop_semver_equal_rule_when_the_given_prop_is_less_than_the_version
|
|
475
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
476
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.semver-greater-than", {"app" => {"version" => "0.0.5"}}, false)
|
|
477
|
-
end
|
|
478
|
-
end
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
#
|
|
3
|
-
# AUTO-GENERATED from integration-test-data/tests/eval/enabled_with_contexts.yaml.
|
|
4
|
-
# Regenerate with:
|
|
5
|
-
# cd integration-test-data/generators && npm run generate -- --target=ruby
|
|
6
|
-
# Source: integration-test-data/generators/src/targets/ruby.ts
|
|
7
|
-
# Do NOT edit by hand — changes will be overwritten.
|
|
8
|
-
|
|
9
|
-
require 'test_helper'
|
|
10
|
-
require 'integration/test_helpers'
|
|
11
|
-
|
|
12
|
-
class TestEnabledWithContexts < Minitest::Test
|
|
13
|
-
def setup
|
|
14
|
-
@store = IntegrationTestHelpers.build_store("enabled_with_contexts")
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
# returns true from global context
|
|
18
|
-
def test_returns_true_from_global_context
|
|
19
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
20
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.in-seg.segment-and", {"" => {"domain" => "prefab.cloud"}, "user" => {"key" => "michael"}}, true)
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
# returns false due to local context override
|
|
24
|
-
def test_returns_false_due_to_local_context_override
|
|
25
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
26
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.in-seg.segment-and", {"" => {"domain" => "prefab.cloud"}, "user" => {"key" => "james"}}, false)
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
# returns false for untouched scope context
|
|
30
|
-
def test_returns_false_for_untouched_scope_context
|
|
31
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
32
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.in-seg.segment-and", {"" => {"domain" => "example.com"}, "user" => {"key" => "nobody"}}, false)
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
# returns false due to partial scope context override of user.key
|
|
36
|
-
def test_returns_false_due_to_partial_scope_context_override_of_user_key
|
|
37
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
38
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.in-seg.segment-and", {"" => {"domain" => "example.com"}, "user" => {"key" => "michael"}}, false)
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
# returns false due to partial scope context override of domain
|
|
42
|
-
def test_returns_false_due_to_partial_scope_context_override_of_domain
|
|
43
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
44
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.in-seg.segment-and", {"" => {"domain" => "example.com", "key" => "prefab.cloud"}, "user" => {"key" => "nobody"}}, false)
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
# returns true due to full scope context override of user.key and domain
|
|
48
|
-
def test_returns_true_due_to_full_scope_context_override_of_user_key_and_domain
|
|
49
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
50
|
-
IntegrationTestHelpers.assert_enabled(resolver, "feature-flag.in-seg.segment-and", {"" => {"domain" => "prefab.cloud"}, "user" => {"key" => "michael"}}, true)
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
# returns false for rule with different case on context property name
|
|
54
|
-
def test_returns_false_for_rule_with_different_case_on_context_property_name
|
|
55
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
56
|
-
IntegrationTestHelpers.assert_enabled(resolver, "mixed.case.property.name", {"user" => {"IsHuman" => "verified"}}, false)
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
# returns true for matching case on context property name
|
|
60
|
-
def test_returns_true_for_matching_case_on_context_property_name
|
|
61
|
-
resolver = IntegrationTestHelpers.build_resolver(@store)
|
|
62
|
-
IntegrationTestHelpers.assert_enabled(resolver, "mixed.case.property.name", {"user" => {"isHuman" => "verified"}}, true)
|
|
63
|
-
end
|
|
64
|
-
end
|