diff --git a/app/controllers/budgets/investments_controller.rb b/app/controllers/budgets/investments_controller.rb index a18c82cdf..aaf65765f 100644 --- a/app/controllers/budgets/investments_controller.rb +++ b/app/controllers/budgets/investments_controller.rb @@ -94,7 +94,8 @@ module Budgets def set_random_seed if params[:order] == 'random' || params[:order].blank? - params[:random_seed] ||= rand(1..9) + seed = rand(10..99) / 10.0 + params[:random_seed] ||= Float(seed) rescue 0 else params[:random_seed] = nil end diff --git a/spec/features/budgets/investments_spec.rb b/spec/features/budgets/investments_spec.rb index ce56dd9b2..535e272a3 100644 --- a/spec/features/budgets/investments_spec.rb +++ b/spec/features/budgets/investments_spec.rb @@ -1,4 +1,5 @@ require 'rails_helper' +require 'sessions_helper' feature 'Budget Investments' do @@ -176,12 +177,12 @@ feature 'Budget Investments' do visit budget_investments_path(budget, order: 'random') - first_page_investments = all(".budget-investment h3").collect {|i| i.text } + first_page_investments = investments_order click_link 'Next' expect(page).to have_content "You're on page 2" - second_page_investments = all(".budget-investment h3").collect {|i| i.text } + second_page_investments = investments_order common_values = first_page_investments & second_page_investments @@ -206,6 +207,48 @@ feature 'Budget Investments' do expect(current_url).to include('order=confidence_score') expect(current_url).to include('page=1') end + + scenario 'Each user as a different and consistent random budget investment order', :js do + 12.times { create(:budget_investment, heading: heading) } + + in_browser(:one) do + visit budget_investments_path(budget, heading: heading) + @first_user_investments_order = investments_order + end + + in_browser(:two) do + visit budget_investments_path(budget, heading: heading) + @second_user_investments_order = investments_order + end + + expect(@first_user_investments_order).not_to eq(@second_user_investments_order) + + in_browser(:one) do + visit budget_investments_path(budget, heading: heading) +# click_link 'Next' +# expect(page).to have_content "You're on page 2" +# +# click_link 'Previous' +# expect(page).to have_content "You're on page 1" +# + expect(investments_order).to eq(@first_user_investments_order) + end + + in_browser(:two) do + visit budget_investments_path(budget, heading: heading) +# click_link 'Next' +# expect(page).to have_content "You're on page 2" +# +# click_link 'Previous' +# expect(page).to have_content "You're on page 1" +# + expect(investments_order).to eq(@second_user_investments_order) + end + end + + def investments_order + all(".budget-investment h3").collect {|i| i.text } + end end