Add regression test against habtm memoized singular_ids

Starting in Rails 5.0.0 and still present in Rails 5.2.1, `singular_ids`
got memoized and didn't reload after more items were added to the
relation.

Although 19c8071 happens to fix the issue, it only adds tests for
`has_many` relations while this bug only affected
`has_and_belongs_to_many` relations.

This commit adds a regression test to ensure it never happens again with
`habtm` relations.

Ensures #34179 never gets reproduced.
This commit is contained in:
Alberto Almagro 2018-10-12 17:14:06 +02:00
parent b0b0cd1fd7
commit 5e92770e5a

@ -25,6 +25,8 @@
require "models/member"
require "models/membership"
require "models/sponsor"
require "models/lesson"
require "models/student"
require "models/country"
require "models/treaty"
require "models/vertex"
@ -780,6 +782,16 @@ def test_assign_ids_ignoring_blanks
assert_equal [projects(:active_record), projects(:action_controller)].map(&:id).sort, developer.project_ids.sort
end
def test_singular_ids_are_reloaded_after_collection_concat
student = Student.create(name: "Alberto Almagro")
student.lesson_ids
lesson = Lesson.create(name: "DSI")
student.lessons << lesson
assert_includes student.lesson_ids, lesson.id
end
def test_scoped_find_on_through_association_doesnt_return_read_only_records
tag = Post.find(1).tags.find_by_name("General")