(self)
| 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 |
nothing calls this directly
no test coverage detected