Skip to content

Commit 1ece12b

Browse files
committed
Update coerced_tests.rb
1 parent 32a9c8c commit 1ece12b

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed

test/cases/coerced_tests.rb

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2103,6 +2103,35 @@ def test_has_many_through_has_and_belongs_to_many_with_has_many_source_reflectio
21032103
end
21042104
end
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+
21062135
class 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}

0 commit comments

Comments
 (0)