Browse files

fix bad test by making number that fits for integer

PR #10566 had to be reverted
because after applying the fix test
started failing.

In this test invalid_id is being assigned a really large number
which was causing following failure when PR #10566 was applied.

RangeError: bignum too big to convert into `long long'
SELECT  `interests`.* FROM `interests`
WHERE `interests`.`man_id` = ? AND `interests`.`id` = ?
LIMIT 1  [["man_id", 970345987], ["id", 2394823094892348920348523452345]]

This test is not failing in master because when test code
`man.interests.find(invalid_id)` is executed then interests
are fully loaded in memory and no database query is executed.

After PR #10566 was merged then test code
`man.interests.find(invalid_id)` started executing sql query
and hence the error.

In case someone is wondering why the second part of query is not
failing, then that's because the actual query does not require
any variable substituation where the number is large. In that
case the sql generate is following.

SELECT `interests`.* FROM `interests`
WHERE `interests`.`man_id` = ? AND `interests`.`id`
IN (8432342, 2390102913, 2453245234523452)  [["man_id", 970345987]]
  • Loading branch information...
1 parent ec1227a commit 010bdec3ac4a77d81b711fd82533d6732f3e6630 Neeraj Singh committed with thedarkone Jun 21, 2013
Showing with 5 additions and 1 deletion.
  1. +5 −1 activerecord/test/cases/associations/inverse_associations_test.rb
@@ -320,9 +320,13 @@ def test_parent_instance_should_find_child_instance_using_child_instance_id_when
def test_raise_record_not_found_error_when_invalid_ids_are_passed
+ # delete all interest records to ensure that hard coded invalid_id(s)
+ # are indeed invalid.
+ Interest.delete_all
man = Man.create!
- invalid_id = 2394823094892348920348523452345
+ invalid_id = 245324523
assert_raise(ActiveRecord::RecordNotFound) { man.interests.find(invalid_id) }
invalid_ids = [8432342, 2390102913, 2453245234523452]

0 comments on commit 010bdec

Please sign in to comment.