Title: Add e2e relationship tests for pre-GA validation by saurabhrb · Pull Request #152 · microsoft/PowerPlatform-DataverseClient-Python · GitHub
Open Graph Title: Add e2e relationship tests for pre-GA validation by saurabhrb · Pull Request #152 · microsoft/PowerPlatform-DataverseClient-Python
X Title: Add e2e relationship tests for pre-GA validation by saurabhrb · Pull Request #152 · microsoft/PowerPlatform-DataverseClient-Python
Description: Summary Add end-to-end relationship tests that validate the full relationship API lifecycle against a live Dataverse environment. This is the primary pre-GA validation for Tim's relationship PRs (#88, #105, #114). Changes New: tests/e2e/test_relationships_e2e.py 11 curated e2e tests covering: Test Class Tests Coverage TestOneToManyCore 1 Full 1:N lifecycle: create, get, delete, field assertions TestLookupField 1 Convenience create_lookup_field to system table TestManyToMany 2 N:N lifecycle + nonexistent returns None TestDataThroughRelationships 4 @odata.bind, $expand, $filter on lookup, update binding TestCascadeBehaviors 2 Restrict blocks delete; Cascade deletes children TestTypeDetection 1 get_relationship distinguishes 1:N vs N:N Updated: examples/basic/functional_testing.py Added relationship testing section covering 1:N core API, convenience API, N:N, get, and delete Added relationship imports and retry helpers Updated: pyproject.toml Added [tool.pytest.ini_options] with testpaths = ["tests/unit"] Default pytest runs only unit tests; e2e tests require explicit invocation How to run e2e tests # Set your Dataverse org URL export DATAVERSE_URL=https://yourorg.crm.dynamics.com # Run relationship e2e tests pytest tests/e2e/ -v -s The tests authenticate via InteractiveBrowserCredential and create/delete temporary tables (prefixed test_E2E*). E2E Test Results (from .scratch/ comprehensive suite) Ran 30 tests against https://aurorabapenv71aff.crm10.dynamics.com: 25/30 passed on first run 5 failures were test bugs (not SDK bugs), all fixed: Metadata propagation timing (increased retries) Navigation property name casing ($expand needs server-assigned nav prop) IsValidForAdvancedFind requires BooleanManagedProperty complex type Finding: SDK inconsistency to address before GA create_one_to_many_relationship() returns lookup_schema_name as the user-provided SchemaName, but $expand requires the server-assigned ReferencingEntityNavigationPropertyName (which may differ in casing). The e2e tests work around this by calling get_relationship() after create to get the correct nav prop name. This should be harmonized before GA. Checklist 398 unit tests pass 11 e2e tests collected by pytest Default pytest excludes e2e (runs unit only) Code formatted with black Branch rebased on origin/main
Open Graph Description: Summary Add end-to-end relationship tests that validate the full relationship API lifecycle against a live Dataverse environment. This is the primary pre-GA validation for Tim's relationship PR...
X Description: Summary Add end-to-end relationship tests that validate the full relationship API lifecycle against a live Dataverse environment. This is the primary pre-GA validation for Tim's relationshi...
Opengraph URL: https://github.com/microsoft/PowerPlatform-DataverseClient-Python/pull/152
X: @github
Domain: github.com
| route-pattern | /:user_id/:repository/pull/:id/files(.:format) |
| route-controller | pull_requests |
| route-action | files |
| fetch-nonce | v2:39e9ade4-a43f-aef7-efc2-a17f4fda4626 |
| current-catalog-service-hash | ae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b |
| request-id | BE60:2DB422:F1401A:14B7003:6A4DD945 |
| html-safe-nonce | e7f68535b5d24792b558cf82fac90e33ef87cb46f62ddff08a504f1784b86c10 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJCRTYwOjJEQjQyMjpGMTQwMUE6MTRCNzAwMzo2QTRERDk0NSIsInZpc2l0b3JfaWQiOiIxMzY3ODk2MDA5ODA4NDAyNzU3IiwicmVnaW9uX2VkZ2UiOiJpYWQiLCJyZWdpb25fcmVuZGVyIjoiaWFkIn0= |
| visitor-hmac | 7da01c4565188a3658565993cd266def2857d0cb020446ee1c4eddaccc1b7ba7 |
| hovercard-subject-tag | pull_request:3412855496 |
| github-keyboard-shortcuts | repository,pull-request-list,pull-request-conversation,pull-request-files-changed,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/microsoft/PowerPlatform-DataverseClient-Python/pull/152/files |
| twitter:image | https://avatars.githubusercontent.com/u/32964911?s=400&v=4 |
| twitter:card | summary_large_image |
| og:image | https://avatars.githubusercontent.com/u/32964911?s=400&v=4 |
| og:image:alt | Summary Add end-to-end relationship tests that validate the full relationship API lifecycle against a live Dataverse environment. This is the primary pre-GA validation for Tim's relationship PR... |
| og:site_name | GitHub |
| og:type | object |
| hostname | github.com |
| expected-hostname | github.com |
| None | 06b8a6144231bf3a234f1c2e9993861e07ce98a905912b114aa386c2d7e84b33 |
| turbo-cache-control | no-preview |
| diff-view | unified |
| go-import | github.com/microsoft/PowerPlatform-DataverseClient-Python git https://github.com/microsoft/PowerPlatform-DataverseClient-Python.git |
| octolytics-dimension-user_id | 6154722 |
| octolytics-dimension-user_login | microsoft |
| octolytics-dimension-repository_id | 1042273116 |
| octolytics-dimension-repository_nwo | microsoft/PowerPlatform-DataverseClient-Python |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 1042273116 |
| octolytics-dimension-repository_network_root_nwo | microsoft/PowerPlatform-DataverseClient-Python |
| turbo-body-classes | logged-out env-production page-responsive full-width |
| disable-turbo | true |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 1d344bdb7547fe6bca17a59bb2b8aac3dc9532a0 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width