-
Notifications
You must be signed in to change notification settings - Fork 517
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fflib_SObjectSelectorTest failure with Lookup relationship and Person Type Accounts #487
Comments
That's an EXCELLENT bug report. Thank you! While I understand that the test failure is what you're reporting, but are you finding any problems with using Person Accounts in general with SObjectSelector or SObjectUnitOfWork? |
We are still in the very early stages of fflib adoption, and we just enabled Person Accounts a few days ago, so there hasn't been much opportunity to notice problems in general. We noticed this because at the moment all of the fflib tests are being run when we deploy, so the first deployment after enabling Person Accounts failed with this test failure. We do have a manual workaround for now. Ideally fflib tests wouldn't be run in our org, but I'm still researching if there's a good way to do that. Right now fflib is just in our source via git submodules. |
To add to this, the version of |
…ect inference (deprecated) method for resolving the relationship name
@CSigelmann -- thank you again for such a perfect repro case and clear diagnosis of the problem. You are indeed correct that that one test method was using the deprecated I have submitted PR#493 with the fix and it should be merged shortly |
And for posterity, the list of relationship names that popped into existence when Person Accounts were enabled wasn't just the one that CSigelmann reported, there were two others which brought the list to:
|
…t-relationship-name Fixes #487 - uses the explicit relationship name rather than the SObject inference (deprecated) method for resolving the relationship name
Describe the bug
The test
toSOQL_When_SystemModeAndChildRelationship_Expect_WellFormedSOQL()
relies onfflib_QueryFactory.getChildRelationship(SObjectType)
, which can get an unexpected relationship when Person Type Accounts are enabled.Opportunities
is not guaranteed to be the first child relationship wherechildRow.getChildSObject() == Opportunity.sObjectType
.To Reproduce
https://github.com/CSigelmann/fflibSelectorTestBug
Steps to reproduce the behavior:
OpportunitiesAFP__pr
comes beforeOpportunities
fflib_SObjectSelectorTest.toSOQL_When_SystemModeAndChildRelationship_Expect_WellFormedSOQL()
OpportunitiesAFP__pr
is being used instead ofOpportunites
Note: I tried this with a different relationship name and did not experience the same results.
OpportunitiesAgent__pr
shows up belowOpportunities
every time. I am not sure how the order is determined, just thatOpportunities
coming first cannot be relied upon.Expected behavior
The test should pass regardless of what custom relationships are in the org fflib is deployed to. It should either use
fflib_QueryFactory.getChildRelationship(String)
to get a specific relationship, or have a matcher that accepts other relationships in the assert.Screenshots and text of error observed
Version
fflib-apex-common @ 41f92e9
fflib-apex-mocks @ b534ae8
The text was updated successfully, but these errors were encountered: