From 5636b9d114852680c8967b58a5eb48286fd4f205 Mon Sep 17 00:00:00 2001 From: Ali Abbas Rizvi Date: Tue, 19 Jun 2018 15:44:28 -0700 Subject: [PATCH] 2.0.2 release (#112) --- .travis.yml | 2 ++ CHANGELOG.md | 5 +++++ lib/optimizely.rb | 18 +++++++++--------- lib/optimizely/version.rb | 2 +- spec/project_spec.rb | 4 +++- 5 files changed, 20 insertions(+), 11 deletions(-) diff --git a/.travis.yml b/.travis.yml index 9c25fa2a..dd6f35af 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,5 +6,7 @@ install: - bundle install - bundle exec rake install before_script: "rubocop" +addons: + srcclr: true script: "rake spec" after_success: "coveralls" diff --git a/CHANGELOG.md b/CHANGELOG.md index a81b6155..44f5a0f1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +## 2.0.2 +June 19th, 2018 + +- Fix: send impression event for Feature Test when Feature is disabled ([#110](https://github.com/optimizely/ruby-sdk/pull/110)). + ## 2.0.1 April 25th, 2018 diff --git a/lib/optimizely.rb b/lib/optimizely.rb index 34a44b2e..5989dab2 100644 --- a/lib/optimizely.rb +++ b/lib/optimizely.rb @@ -258,7 +258,6 @@ def is_feature_enabled(feature_flag_key, user_id, attributes = nil) # Returns True if the feature is enabled. # False if the feature is disabled. # False if the feature is not found. - unless @is_valid logger = SimpleLogger.new logger.log(Logger::ERROR, InvalidDatafileError.new('is_feature_enabled').message) @@ -286,12 +285,6 @@ def is_feature_enabled(feature_flag_key, user_id, attributes = nil) end variation = decision['variation'] - unless variation['featureEnabled'] - @logger.log(Logger::INFO, - "Feature '#{feature_flag_key}' is not enabled for user '#{user_id}'.") - return false - end - if decision.source == Optimizely::DecisionService::DECISION_SOURCE_EXPERIMENT # Send event if Decision came from an experiment. send_impression(decision.experiment, variation['key'], user_id, attributes) @@ -299,9 +292,16 @@ def is_feature_enabled(feature_flag_key, user_id, attributes = nil) @logger.log(Logger::DEBUG, "The user '#{user_id}' is not being experimented on in feature '#{feature_flag_key}'.") end - @logger.log(Logger::INFO, "Feature '#{feature_flag_key}' is enabled for user '#{user_id}'.") - true + if variation['featureEnabled'] == true + @logger.log(Logger::INFO, + "Feature '#{feature_flag_key}' is enabled for user '#{user_id}'.") + return true + else + @logger.log(Logger::INFO, + "Feature '#{feature_flag_key}' is not enabled for user '#{user_id}'.") + return false + end end def get_enabled_features(user_id, attributes = nil) diff --git a/lib/optimizely/version.rb b/lib/optimizely/version.rb index 4987cc2a..4097bce3 100644 --- a/lib/optimizely/version.rb +++ b/lib/optimizely/version.rb @@ -17,5 +17,5 @@ # module Optimizely CLIENT_ENGINE = 'ruby-sdk' - VERSION = '2.0.1' + VERSION = '2.0.2' end diff --git a/spec/project_spec.rb b/spec/project_spec.rb index 8cb69e59..d2c122e6 100644 --- a/spec/project_spec.rb +++ b/spec/project_spec.rb @@ -834,7 +834,8 @@ class InvalidErrorHandler; end expect(spy_logger).to have_received(:log).once.with(Logger::INFO, "Feature 'multi_variate_feature' is enabled for user 'test_user'.") end - it 'should return false, if the user is bucketed into a feature experiment but the featureEnabled property is false' do + it 'should return false and send impression if the user is bucketed into a feature experiment but the featureEnabled property is false' do + allow(project_instance.event_dispatcher).to receive(:dispatch_event).with(instance_of(Optimizely::Event)) experiment_to_return = config_body['experiments'][3] variation_to_return = experiment_to_return['variations'][1] decision_to_return = Optimizely::DecisionService::Decision.new( @@ -846,6 +847,7 @@ class InvalidErrorHandler; end allow(project_instance.decision_service).to receive(:get_variation_for_feature).and_return(decision_to_return) expect(project_instance.is_feature_enabled('multi_variate_feature', 'test_user')).to be false + expect(project_instance.event_dispatcher).to have_received(:dispatch_event).with(instance_of(Optimizely::Event)).once expect(spy_logger).to have_received(:log).once.with(Logger::INFO, "Feature 'multi_variate_feature' is not enabled for user 'test_user'.") end end