|
40 | 40 | require "models/cake_designer"
|
41 | 41 | require "models/drink_designer"
|
42 | 42 | require "models/cpk"
|
| 43 | +require "models/family" |
| 44 | +require "models/family_tree" |
| 45 | +require "models/user" |
43 | 46 |
|
44 | 47 | class TestAutosaveAssociationsInGeneral < ActiveRecord::TestCase
|
45 | 48 | def test_autosave_works_even_when_other_callbacks_update_the_parent_model
|
@@ -1147,6 +1150,34 @@ def test_autosave_new_record_with_after_create_callback_and_habtm_association
|
1147 | 1150 |
|
1148 | 1151 | assert_equal 1, post.categories.reload.length
|
1149 | 1152 | end
|
| 1153 | + |
| 1154 | + FamilyLoadingMiddleAndThroughRecordsBeforeSave = Class.new(Family) do |
| 1155 | + before_save do |
| 1156 | + family_trees.map(&:member) + members |
| 1157 | + end |
| 1158 | + end |
| 1159 | + |
| 1160 | + def test_autosave_new_record_with_hmt_and_middle_record_built_by_parent |
| 1161 | + family = FamilyLoadingMiddleAndThroughRecordsBeforeSave.new |
| 1162 | + family_tree = family.family_trees.build |
| 1163 | + family_tree.build_member |
| 1164 | + family.save! |
| 1165 | + family.reload |
| 1166 | + |
| 1167 | + assert_equal 1, family.family_trees.size |
| 1168 | + assert_equal 1, family.members.size |
| 1169 | + end |
| 1170 | + |
| 1171 | + def test_autosave_new_record_with_hmt_and_middle_record_built_by_through_record |
| 1172 | + family = FamilyLoadingMiddleAndThroughRecordsBeforeSave.new |
| 1173 | + member = family.members.build |
| 1174 | + family.family_trees.build(member: member) |
| 1175 | + family.save! |
| 1176 | + family.reload |
| 1177 | + |
| 1178 | + assert_equal 1, family.family_trees.size |
| 1179 | + assert_equal 1, family.members.size |
| 1180 | + end |
1150 | 1181 | end
|
1151 | 1182 |
|
1152 | 1183 | class TestDestroyAsPartOfAutosaveAssociation < ActiveRecord::TestCase
|
|
0 commit comments