diff --git a/CHANGELOG.md b/CHANGELOG.md index e030d19..dd872e6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ ## 0.5.2 (unreleased) - Fixed error with `events` association +- Fixed explicit exclusion by custom logic ## 0.5.1 (2021-09-22) diff --git a/lib/field_test/helpers.rb b/lib/field_test/helpers.rb index ce637ee..1e2e12d 100644 --- a/lib/field_test/helpers.rb +++ b/lib/field_test/helpers.rb @@ -13,7 +13,7 @@ def field_test(experiment, **options) end if FieldTest.exclude_bots? - options[:exclude] = Browser.new(request.user_agent).bot? + options[:exclude] ||= Browser.new(request.user_agent).bot? end options[:exclude] ||= FieldTest.excluded_ips.any? { |ip| ip.include?(request.remote_ip) } diff --git a/test/controller_test.rb b/test/controller_test.rb index 8e3016a..933283e 100644 --- a/test/controller_test.rb +++ b/test/controller_test.rb @@ -45,6 +45,13 @@ def test_bad_param refute_includes response.body, "Button: bad" end + def test_custom_exclude_logic + get users_url("exclude" => "true") + assert_response :success + + assert_equal 0, FieldTest::Membership.count + end + def test_exclude_bots get users_url, headers: {"HTTP_USER_AGENT" => "Googlebot"} assert_response :success diff --git a/test/internal/app/controllers/users_controller.rb b/test/internal/app/controllers/users_controller.rb index 8024a23..9ee5242 100644 --- a/test/internal/app/controllers/users_controller.rb +++ b/test/internal/app/controllers/users_controller.rb @@ -1,6 +1,6 @@ class UsersController < ActionController::Base def index - @button_color = field_test(:button_color) + @button_color = field_test(:button_color, exclude: params[:exclude]) field_test_converted(:button_color) @experiments = field_test_experiments end diff --git a/test/internal/app/views/users/index.html.erb b/test/internal/app/views/users/index.html.erb index c631047..e4fdaa7 100644 --- a/test/internal/app/views/users/index.html.erb +++ b/test/internal/app/views/users/index.html.erb @@ -1,3 +1,3 @@ -

Button: <%= field_test(:button_color) %>

+

Button: <%= @button_color %>

Converted: <%= field_test_converted(:button_color) %>

Experiments: <%= field_test_experiments %>