|
3 | 3 | require 'spec_helper' |
4 | 4 |
|
5 | 5 | describe SplitIoClient::Engine::Parser::Evaluator do |
6 | | - let(:segments_repository) { SplitIoClient::Cache::Repositories::SegmentsRepository.new(@default_config) } |
7 | | - let(:rule_based_segments_repository) { SplitIoClient::Cache::Repositories::RuleBasedSegmentsRepository.new(@default_config) } |
| 6 | + let(:config) { SplitIoClient::SplitConfig.new(logger: Logger.new(StringIO.new)) } |
| 7 | + let(:segments_repository) { SplitIoClient::Cache::Repositories::SegmentsRepository.new(config) } |
| 8 | + let(:rule_based_segments_repository) { SplitIoClient::Cache::Repositories::RuleBasedSegmentsRepository.new(config) } |
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(@default_config, flag_sets_repository, flag_set_filter) } |
11 | | - let(:evaluator) { described_class.new(segments_repository, splits_repository, rule_based_segments_repository, true) } |
| 11 | + let(:splits_repository) { SplitIoClient::Cache::Repositories::SplitsRepository.new(config, flag_sets_repository, flag_set_filter) } |
| 12 | + let(:evaluator) { described_class.new(segments_repository, splits_repository, rule_based_segments_repository, config) } |
12 | 13 |
|
13 | 14 | let(:killed_split) { { killed: true, defaultTreatment: 'default' } } |
14 | 15 | let(:archived_split) { { status: 'ARCHIVED' } } |
|
17 | 18 | SplitIoClient.root, 'spec/test_data/splits/engine/dependency_matcher.json' |
18 | 19 | )), symbolize_names: true) |
19 | 20 | end |
| 21 | + let(:split_data_prereq) do |
| 22 | + JSON.parse(File.read(File.join( |
| 23 | + SplitIoClient.root, 'spec/test_data/splits/engine/prerequisites_matcher.json' |
| 24 | + )), symbolize_names: true) |
| 25 | + end |
20 | 26 |
|
21 | 27 | it 'returns killed treatment' do |
22 | 28 | expect(evaluator.evaluate_feature_flag({ matching_key: 'foo' }, killed_split)) |
|
40 | 46 | evaluator.evaluate_feature_flag({ bucketing_key: nil, matching_key: 'fake_user_id_1' }, split_data[:ff][:d][1]) |
41 | 47 | end |
42 | 48 | end |
| 49 | + |
| 50 | + context 'prerequisites matcher' do |
| 51 | + it 'test match' do |
| 52 | + splits_repository.update([split_data_prereq[:ff][:d][0], split_data_prereq[:ff][:d][1]], [], 1234) |
| 53 | + |
| 54 | + result = evaluator.evaluate_feature_flag({ bucketing_key: nil, matching_key: 'fake_user' }, 'test_prereq') |
| 55 | + expect(result[:treatment]).to eq('off_default') |
| 56 | + |
| 57 | + result = evaluator.evaluate_feature_flag({ bucketing_key: nil, matching_key: 'fake_user_id_1' }, 'test_prereq') |
| 58 | + expect(result[:treatment]).to eq('on') |
| 59 | + end |
| 60 | + end |
43 | 61 | end |
0 commit comments