diff --git a/lib/split/dashboard.rb b/lib/split/dashboard.rb index 08d3c28a..9958a946 100755 --- a/lib/split/dashboard.rb +++ b/lib/split/dashboard.rb @@ -30,6 +30,11 @@ class Dashboard < Sinatra::Base erb :index end + post '/force_alternative' do + Split::User.new(self)[params[:experiment]] = params[:alternative] + redirect url('/') + end + post '/experiment' do @experiment = Split::ExperimentCatalog.find(params[:experiment]) @alternative = Split::Alternative.new(params[:alternative], params[:experiment]) diff --git a/lib/split/dashboard/views/_experiment.erb b/lib/split/dashboard/views/_experiment.erb index fc77d326..ab9c62e1 100644 --- a/lib/split/dashboard/views/_experiment.erb +++ b/lib/split/dashboard/views/_experiment.erb @@ -51,6 +51,10 @@ <% if alternative.control? %> control <% end %> +
+ + +
<%= alternative.participant_count %> <%= alternative.unfinished_count %> diff --git a/spec/dashboard_spec.rb b/spec/dashboard_spec.rb index 848dbf98..5cc7bfc5 100644 --- a/spec/dashboard_spec.rb +++ b/spec/dashboard_spec.rb @@ -73,6 +73,21 @@ def link(color) end end + describe "force alternative" do + let!(:user) do + Split::User.new(@app, { experiment.name => 'a' }) + end + + before do + allow(Split::User).to receive(:new).and_return(user) + end + + it "should set current user's alternative" do + post "/force_alternative?experiment=#{experiment.name}", alternative: "b" + expect(user[experiment.name]).to eq("b") + end + end + describe "index page" do context "with winner" do before { experiment.winner = 'red' }