|
3 | 3 | require 'spec_helper' |
4 | 4 |
|
5 | 5 | describe SplitIoClient::RuleBasedSegmentMatcher do |
| 6 | + let(:events_queue) { Queue.new } |
6 | 7 | let(:config) { SplitIoClient::SplitConfig.new(debug_enabled: true) } |
7 | | - let(:segments_repository) { SplitIoClient::Cache::Repositories::SegmentsRepository.new(config) } |
| 8 | + let(:segments_repository) { SplitIoClient::Cache::Repositories::SegmentsRepository.new(config, events_queue) } |
8 | 9 | let(:flag_sets_repository) {SplitIoClient::Cache::Repositories::MemoryFlagSetsRepository.new([])} |
9 | 10 | let(:flag_set_filter) {SplitIoClient::Cache::Filter::FlagSetsFilter.new([])} |
10 | | - let(:splits_repository) { SplitIoClient::Cache::Repositories::SplitsRepository.new(config, flag_sets_repository, flag_set_filter) } |
| 11 | + let(:splits_repository) { SplitIoClient::Cache::Repositories::SplitsRepository.new(config, flag_sets_repository, flag_set_filter, events_queue) } |
11 | 12 |
|
12 | 13 | context '#string_type' do |
13 | 14 | it 'is not string type matcher' do |
|
17 | 18 |
|
18 | 19 | context 'test_matcher' do |
19 | 20 | it 'return false if excluded key is passed' do |
20 | | - rbs_repositoy = SplitIoClient::Cache::Repositories::RuleBasedSegmentsRepository.new(config) |
| 21 | + rbs_repositoy = SplitIoClient::Cache::Repositories::RuleBasedSegmentsRepository.new(config, events_queue) |
21 | 22 | rbs_repositoy.update([{name: 'foo', trafficTypeName: 'tt_name_1', conditions: [], excluded: {keys: ['key1'], segments: []}}], [], -1) |
22 | 23 | matcher = described_class.new(segments_repository, rbs_repositoy, 'foo', config) |
23 | 24 | expect(matcher.match?(value: 'key1')).to be false |
24 | 25 | end |
25 | 26 |
|
26 | 27 | it 'return false if excluded segment is passed' do |
27 | | - rbs_repositoy = SplitIoClient::Cache::Repositories::RuleBasedSegmentsRepository.new(config) |
| 28 | + rbs_repositoy = SplitIoClient::Cache::Repositories::RuleBasedSegmentsRepository.new(config, events_queue) |
28 | 29 | evaluator = SplitIoClient::Engine::Parser::Evaluator.new(segments_repository, splits_repository, rbs_repositoy, true) |
29 | 30 | segments_repository.add_to_segment({:name => 'segment1', :added => [], :removed => []}) |
30 | 31 | rbs_repositoy.update([{:name => 'foo', :trafficTypeName => 'tt_name_1', :conditions => [], :excluded => {:keys => ['key1'], :segments => [{:name => 'segment1', :type => 'standard'}]}}], [], -1) |
|
33 | 34 | end |
34 | 35 |
|
35 | 36 | it 'return false if excluded rb segment is matched' do |
36 | | - rbs_repositoy = SplitIoClient::Cache::Repositories::RuleBasedSegmentsRepository.new(config) |
| 37 | + rbs_repositoy = SplitIoClient::Cache::Repositories::RuleBasedSegmentsRepository.new(config, events_queue) |
37 | 38 | rbs = {:name => 'sample_rule_based_segment', :trafficTypeName => 'tt_name_1', :conditions => [{ |
38 | 39 | :matcherGroup => { |
39 | 40 | :combiner => "AND", |
|
106 | 107 | }] |
107 | 108 | } |
108 | 109 |
|
109 | | - rbs_repositoy = SplitIoClient::Cache::Repositories::RuleBasedSegmentsRepository.new(config) |
| 110 | + rbs_repositoy = SplitIoClient::Cache::Repositories::RuleBasedSegmentsRepository.new(config, events_queue) |
110 | 111 | rbs_repositoy.update([rule_based_segment], [], -1) |
111 | 112 | matcher = described_class.new(segments_repository, rbs_repositoy, 'corge', config) |
112 | 113 | expect(matcher.match?({:matching_key => 'user', :attributes => {}})).to be false |
113 | 114 | expect(matcher.match?({:matching_key => 'k1', :attributes => {}})).to be true |
114 | 115 | end |
115 | 116 |
|
116 | 117 | it 'return true if dependent rb segment matches' do |
117 | | - rbs_repositoy = SplitIoClient::Cache::Repositories::RuleBasedSegmentsRepository.new(config) |
| 118 | + rbs_repositoy = SplitIoClient::Cache::Repositories::RuleBasedSegmentsRepository.new(config, events_queue) |
118 | 119 | rbs = { |
119 | 120 | :changeNumber => 5, |
120 | 121 | :name => "dependent_rbs", |
|
180 | 181 | end |
181 | 182 |
|
182 | 183 | it 'return true if has multiple conditions' do |
183 | | - rbs_repositoy = SplitIoClient::Cache::Repositories::RuleBasedSegmentsRepository.new(config) |
| 184 | + rbs_repositoy = SplitIoClient::Cache::Repositories::RuleBasedSegmentsRepository.new(config, events_queue) |
184 | 185 | rbs = { |
185 | 186 | :name => 'sample_rule_based_segment', |
186 | 187 | :trafficTypeName => 'tt_name_1', |
|
0 commit comments