Fix flaky specs: Emails Budgets Selected/Unselected investment #2695
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
References
Objectives
Fix the flaky specs in
spec/features/emails_spec.rb:431
("Emails Budgets Selected investment") andspec/features/emails_spec.rb:454
("Emails Budgets Unselected investment").Explain why the test is flaky, or under which conditions/scenario it fails randomly
The code in both specs is similar, so here's one of them (unnecessary lines omitted):
The test assumes the last email sent will be the one addressed to the author of the last investment created. However, this isn't always the case. The code in
budget.email_selected
is:And this code doesn't always return the selected investments in the order they were created, since postgresql by default doesn't guarantee in which order the records will be returned.
Explain why your PR fixes it
By ordering the selected investments by ID, we ensure the last email is sent to the author of the last created investment, as the specs assume.
Notes
open_last_email
doesn't always return the email for the last created investment.