flipper-cloud 0.20.0.beta1 → 0.20.0.beta2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e589ce31508179cafeb1cd8c008d157354c18e5868546d6e76ec543701268fd7
4
- data.tar.gz: 6b3eb3c890ad5afde871ab6594a2b21f8adfd848a45b4a4bc87d325d79020b68
3
+ metadata.gz: ad733b77b848c6b7b0f1acbe1b9b6c95f87a71e0075dee518c3cfea654b46742
4
+ data.tar.gz: f030f6785ccd8482c660fd9f3e9ece0a81c4b5f455b8c8559ab39b6dc025d29e
5
5
  SHA512:
6
- metadata.gz: 66c7d9c80c1f6be4c8506e25d72f6d88eb2b1b6f0679dec9acdb6e722dcae2b2e2f94026ad25ad260a2e5a2c89cdb826b519b66702ddb338e18b2c7b294429fa
7
- data.tar.gz: aa0de73a845c37c05d1f98cfa33cbc31b24b5d6fb5d8697e81a6079b172e6cecb2bb9c7e06f2cf030d72db1f8142b75c0826fc9ec5f60177a75c1937ab259630
6
+ metadata.gz: 747bc35cfd3642780198a4219cf3b8d91b63aa008efaf445900763b1a8fc61229c4dae9da8affe2b0e607ee86bb1774b6a37abd1ab338c8766dca52baf5ba436
7
+ data.tar.gz: 3d4d1e9b03701f21719e132bcf11cc8d0b9f1d134fea56a14d19df95b9ea6c472eff0fc6daf87d4a9888741b950e3ba21d611b174959c6d707d83a316c77668d
@@ -1,5 +1,6 @@
1
1
  require "flipper/adapters/http"
2
2
  require "flipper/adapters/memory"
3
+ require "flipper/adapters/dual_write"
3
4
  require "flipper/adapters/sync"
4
5
 
5
6
  module Flipper
@@ -129,7 +130,11 @@ module Flipper
129
130
  private
130
131
 
131
132
  def app_adapter
132
- sync_method == :webhook ? local_adapter : sync_adapter
133
+ sync_method == :webhook ? dual_write_adapter : sync_adapter
134
+ end
135
+
136
+ def dual_write_adapter
137
+ Flipper::Adapters::DualWrite.new(local_adapter, http_adapter)
133
138
  end
134
139
 
135
140
  def sync_adapter
@@ -1,3 +1,3 @@
1
1
  module Flipper
2
- VERSION = '0.20.0.beta1'.freeze
2
+ VERSION = '0.20.0.beta2'.freeze
3
3
  end
@@ -143,7 +143,7 @@ RSpec.describe Flipper::Cloud::Configuration do
143
143
  }))
144
144
 
145
145
  expect(instance.sync_method).to eq(:webhook)
146
- expect(instance.adapter).to be_instance_of(Flipper::Adapters::Memory)
146
+ expect(instance.adapter).to be_instance_of(Flipper::Adapters::DualWrite)
147
147
  end
148
148
 
149
149
  it "raises ArgumentError for invalid sync_method" do
@@ -171,7 +171,7 @@ RSpec.describe Flipper::Cloud::Configuration do
171
171
  }))
172
172
 
173
173
  expect(instance.sync_method).to eq(:webhook)
174
- expect(instance.adapter).to be_instance_of(Flipper::Adapters::Memory)
174
+ expect(instance.adapter).to be_instance_of(Flipper::Adapters::DualWrite)
175
175
  end
176
176
 
177
177
  it "can set sync_secret" do
@@ -1,6 +1,7 @@
1
1
  require 'helper'
2
2
  require 'flipper/cloud/configuration'
3
3
  require 'flipper/cloud/dsl'
4
+ require 'flipper/adapters/operation_logger'
4
5
  require 'flipper/adapters/instrumented'
5
6
 
6
7
  RSpec.describe Flipper::Cloud::DSL do
@@ -41,4 +42,46 @@ RSpec.describe Flipper::Cloud::DSL do
41
42
  dsl = described_class.new(cloud_configuration)
42
43
  expect(dsl.sync_secret).to eq("tasty")
43
44
  end
45
+
46
+ context "when sync_method is webhook" do
47
+ let(:local_adapter) do
48
+ Flipper::Adapters::OperationLogger.new Flipper::Adapters::Memory.new
49
+ end
50
+
51
+ let(:cloud_configuration) do
52
+ cloud_configuration = Flipper::Cloud::Configuration.new({
53
+ token: "asdf",
54
+ sync_secret: "tasty",
55
+ sync_method: :webhook,
56
+ local_adapter: local_adapter
57
+ })
58
+ end
59
+
60
+ subject do
61
+ described_class.new(cloud_configuration)
62
+ end
63
+
64
+ it "sends reads to local adapter" do
65
+ subject.features
66
+ subject.enabled?(:foo)
67
+ expect(local_adapter.count(:features)).to be(1)
68
+ expect(local_adapter.count(:get)).to be(1)
69
+ end
70
+
71
+ it "sends writes to cloud and local" do
72
+ add_stub = stub_request(:post, "https://www.flippercloud.io/adapter/features").
73
+ with({headers: {'Flipper-Cloud-Token'=>'asdf'}}).
74
+ to_return(status: 200, body: '{}', headers: {})
75
+ enable_stub = stub_request(:post, "https://www.flippercloud.io/adapter/features/foo/boolean").
76
+ with(headers: {'Flipper-Cloud-Token'=>'asdf'}).
77
+ to_return(status: 200, body: '{}', headers: {})
78
+
79
+ subject.enable(:foo)
80
+
81
+ expect(local_adapter.count(:add)).to be(1)
82
+ expect(local_adapter.count(:enable)).to be(1)
83
+ expect(add_stub).to have_been_requested
84
+ expect(enable_stub).to have_been_requested
85
+ end
86
+ end
44
87
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: flipper-cloud
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.20.0.beta1
4
+ version: 0.20.0.beta2
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Nunemaker
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-12-11 00:00:00.000000000 Z
11
+ date: 2020-12-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: flipper
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.20.0.beta1
19
+ version: 0.20.0.beta2
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 0.20.0.beta1
26
+ version: 0.20.0.beta2
27
27
  description:
28
28
  email:
29
29
  - nunemaker@gmail.com