MCPcopy
hub / github.com/sqlalchemy/sqlalchemy / test_backwards_join

Method test_backwards_join

test/orm/test_joins.py:723–762  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

721 )
722
723 def test_backwards_join(self):
724 User, Address = self.classes.User, self.classes.Address
725
726 # a more controversial feature. join from
727 # User->Address, but the onclause is Address.user.
728
729 sess = fixture_session()
730
731 eq_(
732 sess.query(User)
733 .join(Address.user)
734 .filter(Address.email_address == "ed@wood.com")
735 .all(),
736 [User(id=8, name="ed")],
737 )
738
739 # its actually not so controversial if you view it in terms
740 # of multiple entities.
741 eq_(
742 sess.query(User, Address)
743 .join(Address.user)
744 .filter(Address.email_address == "ed@wood.com")
745 .all(),
746 [(User(id=8, name="ed"), Address(email_address="ed@wood.com"))],
747 )
748
749 # this was the controversial part. now, raise an error if the feature
750 # is abused.
751 # before the error raise was added, this would silently work.....
752 assert_raises(
753 sa_exc.InvalidRequestError,
754 sess.query(User).join(Address, Address.user)._compile_context,
755 )
756
757 # but this one would silently fail
758 adalias = aliased(Address)
759 assert_raises(
760 sa_exc.InvalidRequestError,
761 sess.query(User).join(adalias, Address.user)._compile_context,
762 )
763
764 def test_multiple_with_aliases(self):
765 Order, User = self.classes.Order, self.classes.User

Callers

nothing calls this directly

Calls 10

fixture_sessionFunction · 0.90
eq_Function · 0.90
assert_raisesFunction · 0.90
aliasedFunction · 0.90
UserClass · 0.70
AddressClass · 0.70
allMethod · 0.45
filterMethod · 0.45
joinMethod · 0.45
queryMethod · 0.45

Tested by

no test coverage detected