|
8 | 8 | let(:config) { SplitIoClient::SplitConfig.new(cache_adapter: cache_adapter) } |
9 | 9 | let(:flag_sets_repository) {SplitIoClient::Cache::Repositories::RedisFlagSetsRepository.new(config)} |
10 | 10 | let(:flag_set_filter) {SplitIoClient::Cache::Filter::FlagSetsFilter.new([])} |
11 | | - let(:repository) { described_class.new(config, flag_sets_repository, flag_set_filter) } |
| 11 | + let(:queue) {Queue.new} |
| 12 | + let(:repository) { described_class.new(config, flag_sets_repository, flag_set_filter, queue) } |
12 | 13 |
|
13 | 14 | before :all do |
14 | 15 | redis = Redis.new |
|
172 | 173 | repository.update([split2], [], -1) |
173 | 174 | expect(repository.get_split('corge2')[:conditions]).to eq SplitIoClient::Cache::Repositories::SplitsRepository::DEFAULT_CONDITIONS_TEMPLATE |
174 | 175 | end |
| 176 | + |
| 177 | + it 'push to internal event queue' do |
| 178 | + queue.clear() |
| 179 | + |
| 180 | + repository.update([{name: 'flag1', trafficTypeName: 'tt_name_1', conditions: []}, |
| 181 | + {name: 'flag2', trafficTypeName: 'tt_name_1', conditions: []}], [], -1) |
| 182 | + event = queue.pop |
| 183 | + expect(event.internal_event).to be(SplitIoClient::Engine::Models::SdkInternalEvent::FLAGS_UPDATED) |
| 184 | + expect(event.metadata.type).to be(SplitIoClient::Engine::Models::SdkEventType::FLAG_UPDATE) |
| 185 | + expect(event.metadata.names).to eq(['flag1', 'flag2']) |
| 186 | + |
| 187 | + repository.update([{name: 'flag1', trafficTypeName: 'tt_name_1', killed: false, default_treatment: 'on', changeNumber: 1, conditions: []}], |
| 188 | + [{name: 'flag2', trafficTypeName: 'tt_name_1', conditions: []}], -1) |
| 189 | + event = queue.pop |
| 190 | + expect(event.internal_event).to be(SplitIoClient::Engine::Models::SdkInternalEvent::FLAGS_UPDATED) |
| 191 | + expect(event.metadata.type).to be(SplitIoClient::Engine::Models::SdkEventType::FLAG_UPDATE) |
| 192 | + expect(event.metadata.names).to eq(['flag1', 'flag2']) |
| 193 | + |
| 194 | + repository.update([], [], 123) |
| 195 | + expect(queue.empty?).to eq(true) |
| 196 | + |
| 197 | + repository.kill(123, 'flag1', 'off') |
| 198 | + event = queue.pop |
| 199 | + expect(event.internal_event).to be(SplitIoClient::Engine::Models::SdkInternalEvent::FLAG_KILLED_NOTIFICATION) |
| 200 | + expect(event.metadata.type).to be(SplitIoClient::Engine::Models::SdkEventType::FLAG_UPDATE) |
| 201 | + expect(event.metadata.names).to eq(['flag1']) |
| 202 | + |
| 203 | + repository.update([], [{name: 'flag1', trafficTypeName: 'tt_name_1', killed: false, default_treatment: 'on', changeNumber: 1, conditions: []}], -1) |
| 204 | + event = queue.pop |
| 205 | + expect(event.internal_event).to be(SplitIoClient::Engine::Models::SdkInternalEvent::FLAGS_UPDATED) |
| 206 | + expect(event.metadata.type).to be(SplitIoClient::Engine::Models::SdkEventType::FLAG_UPDATE) |
| 207 | + expect(event.metadata.names).to eq(['flag1']) |
| 208 | + end |
175 | 209 | end |
176 | 210 |
|
177 | 211 | describe 'with Memory Adapter' do |
|
0 commit comments