@@ -2104,7 +2104,7 @@ def test_has_many_through_has_and_belongs_to_many_with_has_many_source_reflectio
21042104end
21052105
21062106class PreloaderTest < ActiveRecord ::TestCase
2107- # SQL format for `order_id_constraint` different .
2107+ # Need to handle query parameters in SQL regex .
21082108 coerce_tests! :test_preloads_has_many_on_model_with_a_composite_primary_key_through_id_attribute
21092109 def test_preloads_has_many_on_model_with_a_composite_primary_key_through_id_attribute_coerced
21102110 order = cpk_orders ( :cpk_groceries_order_2 )
@@ -2130,6 +2130,30 @@ def test_preloads_has_many_on_model_with_a_composite_primary_key_through_id_attr
21302130 assert_match ( expectation , preload_sql )
21312131 assert_equal order_agreements . sort , loaded_order . order_agreements . sort
21322132 end
2133+
2134+ # Need to handle query parameters in SQL regex.
2135+ coerce_tests! :test_preloads_belongs_to_a_composite_primary_key_model_through_id_attribute
2136+ def test_preloads_belongs_to_a_composite_primary_key_model_through_id_attribute_coerced
2137+ order_agreement = cpk_order_agreements ( :order_agreement_three )
2138+ order = cpk_orders ( :cpk_groceries_order_2 )
2139+ assert_equal order , order_agreement . order
2140+
2141+ loaded_order_agreement = nil
2142+ sql = capture_sql do
2143+ loaded_order_agreement = Cpk ::OrderAgreement . where ( id : order_agreement . id ) . includes ( :order ) . to_a . first
2144+ end
2145+
2146+ assert_equal 2 , sql . size
2147+ preload_sql = sql . last
2148+
2149+ c = Cpk ::Order . connection
2150+ order_id = Regexp . escape ( c . quote_table_name ( "cpk_orders.id" ) )
2151+ order_constraint = /#{ order_id } = @0.*@0 = \d +$/
2152+ expectation = /SELECT.*WHERE.* #{ order_constraint } /
2153+
2154+ assert_match ( expectation , preload_sql )
2155+ assert_equal order , loaded_order_agreement . order
2156+ end
21332157end
21342158
21352159class BasePreventWritesTest < ActiveRecord ::TestCase
0 commit comments