#40235 - Conditionally process collectTotal for CartItemPrices GraphQl based on params in the request
Description (*)
- Added condition to check whether collectTotals must be processed if not retrieve from the DB values
- Update the discount amount retrieval from extension attributes to child discount amount, since the extension attribute values are only set during collectTotals
Fixed Issues
- Fixes magento/magento2#40235
Manual testing scenarios (*)
- GraphQl cart API should tested with CartItemPrices
- Make sure Simple+Bundle , configurable+bundle and all product types in cart
Contribution checklist (*)
- [x] Pull request has a meaningful description of its purpose
- [x] All commits are accompanied by meaningful commit messages
- [x] All new or changed code is covered with unit/integration tests (if applicable)
- [ ] README.md files for modified modules are updated and included in the pull request if any README.md predefined sections require an update
- [x] All automated tests passed successfully (all builds are green)
Hi @senthilengg. Thank you for your contribution! Here are some useful tips on how you can test your changes using Magento test environment. :exclamation: Automated tests can be triggered manually with an appropriate comment:
-
@magento run all tests- run or re-run all required tests against the PR changes -
@magento run <test-build(s)>- run or re-run specific test build(s) For example:@magento run Unit Tests
<test-build(s)> is a comma-separated list of build names.
Allowed build names are:
-
Database Compare -
Functional Tests CE -
Functional Tests EE -
Functional Tests B2B -
Integration Tests -
Magento Health Index -
Sample Data Tests CE -
Sample Data Tests EE -
Sample Data Tests B2B -
Static Tests -
Unit Tests -
WebAPI Tests -
Semantic Version Checker
You can find more information about the builds here :information_source: Run only required test builds during development. Run all test builds before sending your pull request for review.
For more details, review the Code Contributions documentation. Join Magento Community Engineering Slack and ask your questions in #github channel.
@magento run all tests
why would this be merged or approved? it's a breaking change. especially for any company that has tests and contract testing.
why would this be merged or approved? it's a breaking change. especially for any company that has tests and contract testing.
@florinel-chis This PR will not be merged until I fix the automated tests. OOB Magento itself doesn’t have test script for CartItemPrices so I have to write from scratch.
@magento run Static Tests, Unit Tests, WebApi Tests
@magento run Static Tests
@magento run all tests
It’s ready for review. Unit testing is abnormally slow and failing. But as per unit test report it’s passed without any failure. Other functional b2b and EE doesn’t seems to be related.
This should not be approved, nor merged. This has not been properly reviewed. Does not describe the problem it solves, what is the impact and so on. If you want to optimise this - then a caching approach that is aware of the last modified date of the cart is a far better way to handle this. Doing all kinds of random "optimisations" is the root of breaking changes. the fact that unit tests pass or the quality gates that are in place pass, does not mean this is a good idea. This kind of MRs should not go and all changes should have an architecture review process.
@florinel-chis read the bug ticket details and then you might be able to relate what’s been fixed here.
In a nutshell this PR avoid collectTotals process for every cart query, you may aware collectTotals trigger rule validation which is a heavy process and create performance issues for the quotes that require more than 5 products and 100’s of rule to identify the valid rules to apply. This PR ensures using the previously processed totals from DB instead of reprocess it every time during the request process and thus reduce load time.
If you can elaborate your caching idea in a separate ticket then the community can collaborate on that one, incase if you have a better approach to avoid processing collectTotals then propose that too.
Where is that issue? (Again, this proposed approach and PR should not be merged nor approved).
@magento run all tests
@magento run all tests
@magento run all tests
Hello @senthilengg,
Thank you for making the changes on the PR!
We are currently discussing this PR with our PO, hence moving this PR on hold. We will keep you updated on this PR.
Thank you