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
This commit is contained in:
@@ -95,7 +95,7 @@ module Budgets
|
|||||||
|
|
||||||
def set_random_seed
|
def set_random_seed
|
||||||
if params[:order] == 'random' || params[:order].blank?
|
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
|
params[:random_seed] ||= Float(seed) rescue 0
|
||||||
else
|
else
|
||||||
params[:random_seed] = nil
|
params[:random_seed] = nil
|
||||||
|
|||||||
@@ -560,16 +560,19 @@ feature 'Budget Investments' do
|
|||||||
expect(current_url).to include('page=1')
|
expect(current_url).to include('page=1')
|
||||||
end
|
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) }
|
(Kaminari.config.default_per_page * 1.3).to_i.times { create(:budget_investment, heading: heading) }
|
||||||
|
|
||||||
|
r1 = 1
|
||||||
|
r2 = 2
|
||||||
|
|
||||||
in_browser(:one) do
|
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
|
@first_user_investments_order = investments_order
|
||||||
end
|
end
|
||||||
|
|
||||||
in_browser(:two) do
|
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
|
@second_user_investments_order = investments_order
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -596,6 +599,23 @@ feature 'Budget Investments' do
|
|||||||
end
|
end
|
||||||
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
|
def investments_order
|
||||||
all(".budget-investment h3").collect {|i| i.text }
|
all(".budget-investment h3").collect {|i| i.text }
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user