From ebebbdf07871ce4cfc0d42dd5b96811b26ecaa7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Fuentes?= Date: Thu, 8 Feb 2018 09:39:18 +0100 Subject: [PATCH] Added bigger pool for random seeds, now with a 9 * 10e-07 % of chance of appearing, also added test to cover edge cases (case in fact, the coincidence of the seeds it's correct) Conflicts: app/controllers/budgets/investments_controller.rb --- .../budgets/investments_controller.rb | 2 +- spec/features/budgets/investments_spec.rb | 26 ++++++++++++++++--- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/app/controllers/budgets/investments_controller.rb b/app/controllers/budgets/investments_controller.rb index 2913ea260..902eaf50f 100644 --- a/app/controllers/budgets/investments_controller.rb +++ b/app/controllers/budgets/investments_controller.rb @@ -95,7 +95,7 @@ module Budgets def set_random_seed if params[:order] == 'random' || params[:order].blank? - seed = rand(-100..100) / 100.0 + seed = params[:random_seed] || session[:random_seed] || rand(-100000..100000) params[:random_seed] ||= Float(seed) rescue 0 else params[:random_seed] = nil diff --git a/spec/features/budgets/investments_spec.rb b/spec/features/budgets/investments_spec.rb index 49af7b870..a606721db 100644 --- a/spec/features/budgets/investments_spec.rb +++ b/spec/features/budgets/investments_spec.rb @@ -560,16 +560,19 @@ feature 'Budget Investments' do expect(current_url).to include('page=1') end - scenario 'Each user as a different and consistent random budget investment order', :js do + scenario 'Each user has a different and consistent random budget investment order when random_seed is disctint', :js do (Kaminari.config.default_per_page * 1.3).to_i.times { create(:budget_investment, heading: heading) } + r1 = 1 + r2 = 2 + in_browser(:one) do - visit budget_investments_path(budget, heading: heading, random_seed: '0.8') + visit budget_investments_path(budget, heading: heading, random_seed: r1) @first_user_investments_order = investments_order end in_browser(:two) do - visit budget_investments_path(budget, heading: heading, random_seed: '-0.1') + visit budget_investments_path(budget, heading: heading, random_seed: r2) @second_user_investments_order = investments_order end @@ -596,6 +599,23 @@ feature 'Budget Investments' do end end + scenario 'Each user has a equal and consistent budget investment order when the random_seed is equal', :js do + (Kaminari.config.default_per_page * 1.3).to_i.times { create(:budget_investment, heading: heading) } + + in_browser(:one) do + visit budget_investments_path(budget, heading: heading, random_seed: '1') + @first_user_investments_order = investments_order + end + + in_browser(:two) do + visit budget_investments_path(budget, heading: heading, random_seed: '1') + @second_user_investments_order = investments_order + end + + expect(@first_user_investments_order).to eq(@second_user_investments_order) + + end + def investments_order all(".budget-investment h3").collect {|i| i.text } end