Last Updated: 2021-05-15
I had a difficult-to-debug test where I was testing access to files based on
Due to how my code was written and executed in the test env, the DB record with id: 1 was released in December and the one with id: 2, was released earlier, in November.
This situation could never have happened in production so it confused the heck out of me in this testing environment. It meant that my code to choose the latest file, which used id was a proxy for recency, failed.
# The maximum(:id) did not correspond to the most recent entity, as I expected ZipFile.where('released_on <= ?', from.to_date) .where('zip_files.id = ?', maximum(:id)) # The maximum(:created_at) also failed, since I created the records out of order # in my test environment # What WORKED was the explicit :released_on column ZipFile.where('released_on <= ?', from.to_date). where('zip_files.released_on = ?', maximum(:released_on))
If possible, avoid ever having database records where items with lower IDs follow afterwards in time. Including in test setups.
When generating items in a loop - even in the testing environment - try to work from past to present since it fits expectations better.