From 37eaf29517325c1dab4dceba34e3c33e279143b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20Mart=C3=ADn?= Date: Fri, 22 Jun 2018 23:54:58 +0200 Subject: [PATCH] Fix flaky emails spec. These tests were failing randomly because there is no guarantee the methods `Budget#email_selected` and `Budget#email_unselected` will always send the emails in the same order, because `investments.selected` and `investments.unselected` don't necessarily return the records in the order they were created. Ordering by id is certainly not very elegant; however, ordering by another field like `created_at` is dangerous because the record could be created at (almost) the exact same time. Related to issue #2446 and issue #2519. --- app/models/budget.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/models/budget.rb b/app/models/budget.rb index 84d511e44..a79746615 100644 --- a/app/models/budget.rb +++ b/app/models/budget.rb @@ -152,13 +152,13 @@ class Budget < ActiveRecord::Base end def email_selected - investments.selected.each do |investment| + investments.selected.order(:id).each do |investment| Mailer.budget_investment_selected(investment).deliver_later end end def email_unselected - investments.unselected.each do |investment| + investments.unselected.order(:id).each do |investment| Mailer.budget_investment_unselected(investment).deliver_later end end