determinator 1.0.0 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +10 -0
- data/README.md +14 -3
- data/examples/determinator-rails/Gemfile.lock +2 -2
- data/lib/determinator/version.rb +1 -1
- data/lib/rspec/determinator.rb +11 -4
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 532bf3e49ff1811ae99eb4e9655c1ab8c3f4ec9b
|
4
|
+
data.tar.gz: 69a37c14086d2a79fad647ad9a7924a35f3b6050
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 486f995cedb81e7053aa5baecc54861bfc3153a382c0614d1917652f9c785e720804a031027494759d0a817b292581c1c3f20b369d5385212cce676298802a66
|
7
|
+
data.tar.gz: c5325f6116a94d4f2e0af17d814a1cb7ca72bf3d3ac0fe72ecd4c7c9a31a58f84247e36e9af52225de670afb03824ce2a8c1d653eb86cde070b6a21b712c7cdc
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
# v1.1.0 (2018-02-07)
|
2
|
+
|
3
|
+
⚠️ This release includes breaking changes to `RSpec::Determinator` ⚠️
|
4
|
+
|
5
|
+
Breaking change:
|
6
|
+
- If two `forced_determination`s are made within one rspec test case, it is now the _last_ one that takes precedence (not the first). (#47)
|
7
|
+
|
8
|
+
Bug fix:
|
9
|
+
- `forced_determination`s which are called with differently typed parameters (eg. integer vs. string, boolean vs. string) will now work in the same way that real determination will. (#47)
|
10
|
+
|
1
11
|
# v1.0.0 (2018-02-05)
|
2
12
|
|
3
13
|
⚠️ This release includes breaking changes ⚠️
|
data/README.md
CHANGED
@@ -179,10 +179,21 @@ RSpec.describe "something", :determinator_support do
|
|
179
179
|
forced_determination(:my_lazyexperiment, :some_lazy_variable)
|
180
180
|
let(:some_lazy_variable) { 'variant_b' }
|
181
181
|
|
182
|
+
forced_determination(:my_targeted_feature_flag, true, only_for: { employee: true })
|
183
|
+
forced_determination(:my_targeted_feature_flag, false, only_for: { id: 12345 })
|
184
|
+
|
182
185
|
it "uses forced_determination" do
|
183
|
-
|
184
|
-
|
185
|
-
expect(
|
186
|
+
determinator = Determinator.for_actor(id: 1)
|
187
|
+
|
188
|
+
expect(determinator.feature_flag_on?(:my_feature_flag)).to be true
|
189
|
+
expect(determinator.which_variant(:my_experiment)).to eq("variant_a")
|
190
|
+
expect(determinator.which_variant(:my_lazy_experiment)).to eq("variant_b")
|
191
|
+
|
192
|
+
expect(determinator.feature_flag_on?(:my_targeted_feature_flag, properties: { employee: false })).to be false
|
193
|
+
expect(determinator.feature_flag_on?(:my_targeted_feature_flag, properties: { employee: true })).to be true
|
194
|
+
|
195
|
+
# The last forced determination takes precedence
|
196
|
+
expect(Determinator.instance.feature_flag_on?(:my_targeted_feature_flag, id: 12345, properties: { employee: true })).to be false
|
186
197
|
end
|
187
198
|
end
|
188
199
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: ../..
|
3
3
|
specs:
|
4
|
-
determinator (0.
|
4
|
+
determinator (1.0.0)
|
5
5
|
routemaster-drain (~> 3.0)
|
6
6
|
|
7
7
|
GEM
|
@@ -65,7 +65,7 @@ GEM
|
|
65
65
|
multipart-post (>= 1.2, < 3)
|
66
66
|
faraday_middleware (0.12.2)
|
67
67
|
faraday (>= 0.7.4, < 1.0)
|
68
|
-
ffi (1.9.
|
68
|
+
ffi (1.9.21)
|
69
69
|
globalid (0.3.7)
|
70
70
|
activesupport (>= 4.1.0)
|
71
71
|
hashie (3.5.7)
|
data/lib/determinator/version.rb
CHANGED
data/lib/rspec/determinator.rb
CHANGED
@@ -45,14 +45,14 @@ module RSpec
|
|
45
45
|
end
|
46
46
|
|
47
47
|
def mock_result(name, result, only_for: {})
|
48
|
-
@mocked_results[name.to_s][only_for] = result
|
48
|
+
@mocked_results[name.to_s][normalize_properties(only_for)] = result
|
49
49
|
end
|
50
50
|
|
51
51
|
def fake_determinate(name, id: nil, guid: nil, properties: {})
|
52
52
|
properties[:id] = id if id
|
53
53
|
properties[:guid] = guid if guid
|
54
54
|
|
55
|
-
outcome_for_feature_given_properties(name.to_s, properties)
|
55
|
+
outcome_for_feature_given_properties(name.to_s, normalize_properties(properties))
|
56
56
|
end
|
57
57
|
alias_method :feature_flag_on?, :fake_determinate
|
58
58
|
alias_method :which_variant, :fake_determinate
|
@@ -62,11 +62,18 @@ module RSpec
|
|
62
62
|
def outcome_for_feature_given_properties(feature_name, requirements)
|
63
63
|
req_array = requirements.to_a
|
64
64
|
|
65
|
-
|
65
|
+
keys_in_priority_order = @mocked_results[feature_name].keys.reverse
|
66
|
+
key = keys_in_priority_order.find do |given|
|
66
67
|
(given.to_a - req_array).empty?
|
67
68
|
end
|
68
69
|
|
69
|
-
|
70
|
+
@mocked_results[feature_name][key] || false
|
71
|
+
end
|
72
|
+
|
73
|
+
def normalize_properties(properties)
|
74
|
+
properties.each_with_object({}) do |(key, value), hash|
|
75
|
+
hash[key.to_s] = [*value].map(&:to_s)
|
76
|
+
end
|
70
77
|
end
|
71
78
|
end
|
72
79
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: determinator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- JP Hastings-Spital
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-02-
|
11
|
+
date: 2018-02-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: routemaster-drain
|