From b39db078374e0accd838e9d25e01dd7138726ad8 Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Wed, 23 May 2012 12:23:56 -0400 Subject: [PATCH] add a test for r2491 --- test/orm/test_rel_fn.py | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/test/orm/test_rel_fn.py b/test/orm/test_rel_fn.py index e35dd925a6..c00a903fa9 100644 --- a/test/orm/test_rel_fn.py +++ b/test/orm/test_rel_fn.py @@ -81,6 +81,11 @@ class _JoinFixtures(object): primary_key=True), Column('base_id', Integer, ForeignKey('base.id')) ) + cls.sub_w_sub_rel = Table('sub_w_sub_rel', m, + Column('id', Integer, ForeignKey('base.id'), + primary_key=True), + Column('sub_id', Integer, ForeignKey('sub.id')) + ) cls.right_w_base_rel = Table('right_w_base_rel', m, Column('id', Integer, primary_key=True), Column('base_id', Integer, ForeignKey('base.id')) @@ -283,6 +288,17 @@ class _JoinFixtures(object): primaryjoin=self.sub_w_base_rel.c.base_id==self.base.c.id ) + def _join_fixture_o2m_joined_sub_to_sub(self, **kw): + left = self.base.join(self.sub, self.base.c.id==self.sub.c.id) + right = self.base.join(self.sub_w_sub_rel, self.base.c.id==self.sub_w_sub_rel.c.id) + return relationships.JoinCondition( + left, + right, + self.sub, + self.sub_w_sub_rel, + primaryjoin=self.sub.c.id==self.sub_w_sub_rel.c.sub_id + ) + def _join_fixture_m2o_sub_to_joined_sub(self, **kw): # see test.orm.test_mapper:MapperTest.test_add_column_prop_deannotate, right = self.base.join(self.right_w_base_rel, @@ -484,6 +500,26 @@ class ColumnCollectionsTest(_JoinFixtures, fixtures.TestBase, AssertsCompiledSQL ] ) + def test_determine_remote_columns_o2m_joined_sub_to_sub(self): + def _join_fixture_o2m_joined_sub_to_sub(self, **kw): + left = self.base.join(self.sub, self.base.c.id==self.sub.c.id) + right = self.base.join(self.sub_w_sub_rel, self.base.c.id==self.sub_w_sub_rel.c.id) + return relationships.JoinCondition( + left, + right, + self.sub, + self.sub_w_sub_rel, + primaryjoin=self.sub.c.id==self.sub_w_sub_rel.c.sub_id + ) + + joincond = self._join_fixture_o2m_joined_sub_to_sub() + eq_( + joincond.local_remote_pairs, + [ + (self.sub.c.id, self.sub_w_sub_rel.c.sub_id) + ] + ) + def test_determine_remote_columns_compound_1(self): joincond = self._join_fixture_compound_expression_1( support_sync=False) -- 2.47.3