|
11 | 11 | end |
12 | 12 |
|
13 | 13 | before do |
14 | | - stub_request(:get, 'https://sdk.split.io/api/splitChanges?s=1.1&since=-1') |
| 14 | + stub_request(:get, 'https://sdk.split.io/api/splitChanges?s=1.3&since=-1&rbSince=-1') |
15 | 15 | .to_return(status: 200, body: active_splits_json) |
16 | 16 | end |
17 | 17 |
|
|
26 | 26 | let(:flag_sets_repository) {SplitIoClient::Cache::Repositories::MemoryFlagSetsRepository.new([]) } |
27 | 27 | let(:flag_set_filter) {SplitIoClient::Cache::Filter::FlagSetsFilter.new([]) } |
28 | 28 | let(:splits_repository) { SplitIoClient::Cache::Repositories::SplitsRepository.new(config, flag_sets_repository, flag_set_filter) } |
| 29 | + let(:rule_based_segments_repository) { SplitIoClient::Cache::Repositories::RuleBasedSegmentsRepository.new(config) } |
29 | 30 | let(:telemetry_runtime_producer) { SplitIoClient::Telemetry::RuntimeProducer.new(config) } |
30 | | - let(:store) { described_class.new(splits_repository, '', config, telemetry_runtime_producer) } |
| 31 | + let(:store) { described_class.new(splits_repository, rule_based_segments_repository, '', config, telemetry_runtime_producer) } |
31 | 32 |
|
32 | 33 | it 'returns splits since' do |
33 | | - splits = store.send(:splits_since, -1) |
| 34 | + splits = store.send(:splits_since, -1, -1) |
34 | 35 |
|
35 | | - expect(splits[:splits].count).to eq(2) |
| 36 | + expect(splits[:ff][:d].count).to eq(2) |
| 37 | + expect(splits[:rbs][:d].count).to eq(1) |
36 | 38 | end |
37 | 39 |
|
38 | 40 | it 'fetch data in the cache' do |
39 | 41 | store.send(:fetch_splits) |
40 | | - |
41 | 42 | expect(store.splits_repository.splits.size).to eq(2) |
42 | | - expect(store.splits_repository.get_change_number).to eq(store.send(:splits_since, -1)[:till]) |
| 43 | + expect(store.splits_repository.get_change_number).to eq(store.send(:splits_since, -1, -1)[:ff][:t]) |
| 44 | + expect(store.rule_based_segments_repository.rule_based_segment_names.size).to eq(1) |
| 45 | + expect(store.rule_based_segments_repository.get_change_number).to eq(store.send(:splits_since, -1, -1)[:rbs][:t]) |
43 | 46 | end |
44 | 47 |
|
45 | 48 | it 'refreshes splits' do |
|
48 | 51 | active_split = store.splits_repository.splits['test_1_ruby'] |
49 | 52 | expect(active_split[:status]).to eq('ACTIVE') |
50 | 53 |
|
51 | | - stub_request(:get, 'https://sdk.split.io/api/splitChanges?s=1.1&since=1473413807667') |
| 54 | + stub_request(:get, 'https://sdk.split.io/api/splitChanges?s=1.3&since=1473413807667&rbSince=1457726098069') |
52 | 55 | .to_return(status: 200, body: archived_splits_json) |
53 | 56 |
|
54 | 57 | store.send(:fetch_splits) |
|
77 | 80 | let(:flag_sets_repository) {SplitIoClient::Cache::Repositories::MemoryFlagSetsRepository.new(['set_2']) } |
78 | 81 | let(:flag_set_filter) {SplitIoClient::Cache::Filter::FlagSetsFilter.new(['set_2']) } |
79 | 82 | let(:splits_repository) { SplitIoClient::Cache::Repositories::SplitsRepository.new(config, flag_sets_repository, flag_set_filter) } |
| 83 | + let(:rule_based_segments_repository) { SplitIoClient::Cache::Repositories::RuleBasedSegmentsRepository.new(config) } |
80 | 84 | let(:telemetry_runtime_producer) { SplitIoClient::Telemetry::RuntimeProducer.new(config) } |
81 | | - let(:store) { described_class.new(splits_repository, '', config, telemetry_runtime_producer) } |
| 85 | + let(:store) { described_class.new(splits_repository, rule_based_segments_repository, '', config, telemetry_runtime_producer) } |
82 | 86 |
|
83 | 87 | before do |
84 | | - stub_request(:get, 'https://sdk.split.io/api/splitChanges?s=1.1&since=-1&sets=set_2') |
| 88 | + stub_request(:get, 'https://sdk.split.io/api/splitChanges?s=1.3&since=-1&rbSince=-1&sets=set_2') |
85 | 89 | .to_return(status: 200, body: active_splits_json) |
86 | 90 | end |
87 | 91 |
|
88 | 92 | it 'returns splits since' do |
89 | | - splits = store.send(:splits_since, -1) |
| 93 | + splits = store.send(:splits_since, -1, -1) |
90 | 94 |
|
91 | | - expect(splits[:splits].count).to eq(2) |
| 95 | + expect(splits[:ff][:d].count).to eq(2) |
92 | 96 | end |
93 | 97 |
|
94 | 98 | it 'fetch data in the cache' do |
95 | 99 | store.send(:fetch_splits) |
96 | 100 |
|
97 | 101 | expect(store.splits_repository.splits.size).to eq(1) |
98 | | - expect(store.splits_repository.get_change_number).to eq(store.send(:splits_since, -1)[:till]) |
| 102 | + expect(store.splits_repository.get_change_number).to eq(store.send(:splits_since, -1, -1)[:ff][:t]) |
99 | 103 | end |
100 | 104 |
|
101 | 105 | it 'refreshes splits' do |
102 | 106 | store.send(:fetch_splits) |
103 | 107 | expect(store.splits_repository.get_split('sample_feature')[:name]).to eq('sample_feature') |
104 | 108 | expect(store.splits_repository.get_split('test_1_ruby')).to eq(nil) |
105 | 109 |
|
106 | | - stub_request(:get, 'https://sdk.split.io/api/splitChanges?s=1.1&since=1473413807667&sets=set_2') |
| 110 | + stub_request(:get, 'https://sdk.split.io/api/splitChanges?s=1.3&since=1473413807667&rbSince=1457726098069&sets=set_2') |
107 | 111 | .to_return(status: 200, body: archived_splits_json) |
108 | 112 |
|
109 | 113 | store.send(:fetch_splits) |
110 | 114 | expect(store.splits_repository.get_split('sample_feature')).to eq(nil) |
111 | 115 |
|
112 | 116 | store.splits_repository.set_change_number(-1) |
113 | | - stub_request(:get, 'https://sdk.split.io/api/splitChanges?s=1.1&since=-1&sets=set_2') |
| 117 | + store.rule_based_segments_repository.set_change_number(-1) |
| 118 | + stub_request(:get, 'https://sdk.split.io/api/splitChanges?s=1.3&since=-1&rbSince=-1&sets=set_2') |
114 | 119 | .to_return(status: 200, body: active_splits_json) |
115 | 120 |
|
116 | 121 | store.send(:fetch_splits) |
|
129 | 134 | let(:flag_sets_repository) {SplitIoClient::Cache::Repositories::RedisFlagSetsRepository.new(config) } |
130 | 135 | let(:flag_set_filter) {SplitIoClient::Cache::Filter::FlagSetsFilter.new([]) } |
131 | 136 | let(:splits_repository) { SplitIoClient::Cache::Repositories::SplitsRepository.new(config, flag_sets_repository, flag_set_filter) } |
| 137 | + let(:rule_based_segments_repository) { SplitIoClient::Cache::Repositories::RuleBasedSegmentsRepository.new(config) } |
132 | 138 | let(:telemetry_runtime_producer) { SplitIoClient::Telemetry::RuntimeProducer.new(config) } |
133 | | - let(:store) { described_class.new(splits_repository, '', config, telemetry_runtime_producer) } |
| 139 | + let(:store) { described_class.new(splits_repository, rule_based_segments_repository, '', config, telemetry_runtime_producer) } |
134 | 140 |
|
135 | 141 | it 'returns splits since' do |
136 | | - splits = store.send(:splits_since, -1) |
137 | | - expect(splits[:splits].count).to eq(2) |
| 142 | + splits = store.send(:splits_since, -1, -1) |
| 143 | + expect(splits[:ff][:d].count).to eq(2) |
138 | 144 | end |
139 | 145 |
|
140 | 146 | it 'fetch data in the cache' do |
141 | 147 | store.send(:fetch_splits) |
142 | 148 | expect(store.splits_repository.splits.size).to eq(2) |
143 | | - expect(store.splits_repository.get_change_number).to eq(store.send(:splits_since, -1)[:till].to_s) |
| 149 | + expect(store.splits_repository.get_change_number).to eq(store.send(:splits_since, -1, -1)[:ff][:t].to_s) |
144 | 150 | end |
145 | 151 |
|
146 | 152 | it 'refreshes splits' do |
|
149 | 155 | active_split = store.splits_repository.splits['test_1_ruby'] |
150 | 156 | expect(active_split[:status]).to eq('ACTIVE') |
151 | 157 |
|
152 | | - stub_request(:get, 'https://sdk.split.io/api/splitChanges?s=1.1&since=1473413807667') |
| 158 | + stub_request(:get, 'https://sdk.split.io/api/splitChanges?s=1.3&since=1473413807667&rbSince=1457726098069') |
153 | 159 | .to_return(status: 200, body: archived_splits_json) |
154 | 160 |
|
155 | 161 | store.send(:fetch_splits) |
|
0 commit comments