determinator 1.0.0 → 1.1.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.
- 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
|