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
2103
2103
end
2104
2104
end
2105
2105
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
+
2106
2135
class BasePreventWritesTest < ActiveRecord ::TestCase
2107
2136
# SQL Server does not have query for release_savepoint
2108
2137
coerce_tests! %r{an empty transaction does not raise if preventing writes}
You can’t perform that action at this time.
0 commit comments