File tree Expand file tree Collapse file tree 1 file changed +29
-0
lines changed Expand file tree Collapse file tree 1 file changed +29
-0
lines changed Original file line number Diff line number Diff line change @@ -2103,6 +2103,35 @@ def test_has_many_through_has_and_belongs_to_many_with_has_many_source_reflectio
21032103 end
21042104end
21052105
2106+ class PreloaderTest < ActiveRecord ::TestCase
2107+ # SQL format for `order_id_constraint` different.
2108+ coerce_tests! :test_preloads_has_many_on_model_with_a_composite_primary_key_through_id_attribute
2109+ def test_preloads_has_many_on_model_with_a_composite_primary_key_through_id_attribute_coerced
2110+ order = cpk_orders ( :cpk_groceries_order_2 )
2111+ _shop_id , order_id = order . id
2112+ order_agreements = Cpk ::OrderAgreement . where ( order_id : order_id ) . to_a
2113+
2114+ assert_not_empty order_agreements
2115+ assert_equal order_agreements . sort , order . order_agreements . sort
2116+
2117+ loaded_order = nil
2118+ sql = capture_sql do
2119+ loaded_order = Cpk ::Order . where ( id : order_id ) . includes ( :order_agreements ) . to_a . first
2120+ end
2121+
2122+ assert_equal 2 , sql . size
2123+ preload_sql = sql . last
2124+
2125+ c = Cpk ::OrderAgreement . connection
2126+ order_id_column = Regexp . escape ( c . quote_table_name ( "cpk_order_agreements.order_id" ) )
2127+ order_id_constraint = /#{ order_id_column } = @0.*@0 = \d +$/
2128+ expectation = /SELECT.*WHERE.* #{ order_id_constraint } /
2129+
2130+ assert_match ( expectation , preload_sql )
2131+ assert_equal order_agreements . sort , loaded_order . order_agreements . sort
2132+ end
2133+ end
2134+
21062135class BasePreventWritesTest < ActiveRecord ::TestCase
21072136 # SQL Server does not have query for release_savepoint
21082137 coerce_tests! %r{an empty transaction does not raise if preventing writes}
You can’t perform that action at this time.
0 commit comments