-
Notifications
You must be signed in to change notification settings - Fork 5.4k
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
Add gift promotion #15259
Merged
Merged
Add gift promotion #15259
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
IKarbowiak
force-pushed
the
feature/gift-promotions
branch
2 times, most recently
from
January 22, 2024 12:08
5b9464a
to
cfbd53a
Compare
Here is the report for 2aad568 (saleor:feature/gift-promotions) Found 14 differences! (click me)
# saleor.graphql.accountbenchmark account
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
addresses for federation query count 9 9 2
customers query 51 51 0
delete staff members 41 41 0
query staff user 22 22 3
staff create 23 23 3
staff update groups and permissions 36 36 5
users for federation query count 8 8 3
# saleor.graphql.accountbenchmark permission group
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
groups for federation query count 5 5 0
permission group create 25 25 0
permission group delete 30 30 3
permission group query 14 14 0
permission group update 44 44 2
permission group update remove users with manage staff 36 36 3
# saleor.graphql.appbenchmarks app extensions
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
app extensions 15 15 0
app extensions with filter[filter0] 14 14 0
app extensions with filter[filter1] 10 10 0
app extensions with filter[filter2] 14 14 0
app extensions with filter[filter3] 10 10 0
# saleor.graphql.appbenchmarks apps
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
apps for federation query count 9 9 3
apps with tokens and webhooks 9 9 0
# saleor.graphql.attributebenchmark attribute
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
attribute translation 6 6 0
attribute value translation 20 20 0
query attribute 6 6 0
query attributes 8 8 0
# saleor.graphql.channelbenchmark channel
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
channels query 5 5 0
# saleor.graphql.channelmutations channel update
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
channel update mutation remove warehouse 38 38 6
# saleor.graphql.checkoutbenchmark checkout mutations
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
add billing address to checkout 75 75 10
add checkout lines 80 80 11
+ add checkout lines gift discount applies - 142 20
+ add checkout lines order discount applies - 156 15
add checkout lines with external shipping 183 183 74
add checkout lines with reservations 169 169 59
add delivery to checkout 77 77 12
add shipping to checkout 88 88 15
checkout email update 40 40 1
checkout payment charge 55 55 15
checkout shipping address update 81 81 9
checkout voucher code 100 100 16
complete checkout 239 239 81
complete checkout preorder 237 237 82
complete checkout with digital line 280 280 95
complete checkout with out of stock webhook 241 241 81
complete checkout with single line 241 241 81
- create checkout 80 81 8
+ create checkout with gift promotion - 120 18
+ create checkout with order promotion - 103 8
- create checkout with reservations 145 147 25
customer complete checkout 252 252 87
customer complete checkout for cc 227 227 76
update checkout lines 73 73 11
update checkout lines with reservations 175 175 70
# saleor.graphql.checkoutbenchmark checkouts
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
staff multiple checkouts 6 6 0
# saleor.graphql.checkoutbenchmark homepage
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
user checkout details 59 59 5
user checkout details with tax app 53 53 2
# saleor.graphql.discountbenchmark promotion create
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
+ promotion create 55 52 3
+ promotion create order promotion - 41 7
# saleor.graphql.discountbenchmark promotion delete
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
+ gift promotion delete - 24 1
- promotion delete 31 32 1
# saleor.graphql.discountbenchmark promotion rule create
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
+ promotion rule create 40 36 0
+ promotion rule create gift - 144 9
# saleor.graphql.discountbenchmark promotion rule delete
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
- promotion rule delete 21 22 0
# saleor.graphql.discountbenchmark promotion rule update
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
- promotion rule update 39 42 1
# saleor.graphql.discountbenchmark promotion update
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
promotion update 38 38 1
# saleor.graphql.discountbenchmark promotions
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
promotions querytest promotions query 9 9 0
# saleor.graphql.discountbenchmark sales
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
sales query with channel slug 9 9 0
sales query without channel slug 7 7 0
# saleor.graphql.discountbenchmark voucher code bulk delete
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
voucher code bulk delete queries 22 22 2
# saleor.graphql.discountbenchmark vouchers
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
vouchers query with channel slug 20 20 0
vouchers query withot channel slug 19 19 0
# saleor.graphql.giftcardbenchmark gift card mutations
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
create never expiry gift card 26 26 4
gift card bulk activate by staff 16 16 3
update gift card 36 36 4
# saleor.graphql.giftcardbenchmark gift card queries
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
filter gift cards by products 14 14 3
filter gift cards by tags 12 12 3
filter gift cards by used by user 13 13 3
query gift card details 14 14 3
query gift cards 12 12 3
# saleor.graphql.orderbenchmark fulfillment
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
fulfillment query 6 6 0
# saleor.graphql.orderbenchmark fulfillment refund and return products
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
fulfillment refund products order lines 60 60 0
fulfillment return products order lines 102 102 7
# saleor.graphql.orderbenchmark order
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
staff multiple draft orders 7 7 0
staff multiple orders 7 7 0
staff order details 56 56 7
user order details 54 54 8
# saleor.graphql.orderbenchmark order bulk create
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
order bulk create 21 21 2
# saleor.graphql.orderbenchmark order fulfill
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
order fulfill 19 19 0
order fulfill with gift cards 19 19 0
# saleor.graphql.orderbenchmark order lines create
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
order lines create 94 94 17
order lines create variants on promotion 153 153 22
# saleor.graphql.pagebenchmark page type
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
page types for federation query count 3 3 0
query page type 18 18 6
query page types 25 25 12
# saleor.graphql.paymentbenchmark payment transactions
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
payment transactions 54 54 20
# saleor.graphql.productbenchmark category
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
categories children 3 3 0
categories for federation query count 3 3 0
category delete 65 65 9
category view 33 33 4
# saleor.graphql.productbenchmark collection
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
collection add products 46 46 8
collection bulk delete 54 54 6
collection view 11 11 3
collections for federation query count 6 6 0
create collection 37 37 5
delete collection 51 51 7
remove products from collection 43 43 8
retrieve collection channel listings 5 5 0
# saleor.graphql.productbenchmark homepage
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
report product sales 10 10 3
retrieve product list 4 4 0
# saleor.graphql.productbenchmark product
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
filter products by attributes 10 10 1
filter products by boolean attributes 17 17 1
filter products by gift card 14 14 2
filter products by numeric attributes 16 16 1
product create 63 63 3
product details 46 46 4
product translations 8 8 1
products for federation query count 12 12 4
products media for federation query count 5 5 0
products types for federation query count 2 2 0
retrieve channel listings 20 20 0
retrieve product attributes 11 11 1
retrieve product images 7 7 1
retrieve product media 7 7 1
retrive products with product types and attributes 10 10 1
update product 85 85 5
# saleor.graphql.productbenchmark product variant channel listing update
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
variant channel listing update 47 47 3
# saleor.graphql.productbenchmark variant
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
product variant bulk create 55 55 1
product variant create 69 69 3
products variants for federation query count 10 10 3
retrieve variant list 37 37 2
update product variant 68 68 6
# saleor.graphql.productbenchmark variant stocks
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
product variants stocks create 29 29 4
product variants stocks create with single webhook called 28 28 4
product variants stocks delete by id 30 30 4
product variants stocks delete by sku 30 30 4
product variants stocks delete with out of stock webhook many calls 26 26 3
product variants stocks update by sku 28 28 4
product variants stocks update byid 28 28 4
query product variants stocks 10 10 0
# saleor.graphql.producttest product sorting attributes
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
sort product not having attribute data 20 20 0
# saleor.graphql.shippingbenchmark shipping methods
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
vouchers query with channel slug 7 7 0
vouchers query without channel slug 7 7 0
# saleor.graphql.shippingbenchmark shipping zones
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
shipping zones query 6 6 0
# saleor.graphql.shopbenchmark homepage
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
retrieve shop 2 2 0
# saleor.graphql.warehousebenchmark stock bulk update
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
stocks bulk update queries count 33 33 5
# saleor.graphql.warehousebenchmark stocks
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
stocks query 5 5 0
# saleor.graphql.webhookbenchmark webhook events
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
webhooks 6 6 0
|
Codecov ReportAttention:
Additional details and impacted files@@ Coverage Diff @@
## main #15259 +/- ##
========================================
Coverage 93.92% 93.92%
========================================
Files 929 929
Lines 70426 70692 +266
Branches 8146 8214 +68
========================================
+ Hits 66145 66396 +251
- Misses 2752 2759 +7
- Partials 1529 1537 +8 ☔ View full report in Codecov by Sentry. |
IKarbowiak
force-pushed
the
feature/gift-promotions
branch
from
January 22, 2024 12:58
ac01b5d
to
e8e23b2
Compare
Base automatically changed from
feature/checkout-and-order-promotions
to
main
February 7, 2024 11:45
* Extend PromotionRule with gifts field * Extend CheckoutLine and OrderLine with is_gift field * Add GIFT RewardType * Add gift_promotion_rule fixture
* Add 'gifts' and 'giftsLimit' fields to 'PromotionRule' type. * Add 'is_gift' field to 'OrderLine' and 'CheckoutLine' types. * Add 'gifts' to promotion rule input; validate gift promotions. * Make it working. * Add tests to promotion rule create. * Adjust promotion create mutation. * Add test for promotion create mutation. * Add tests to promotion rule update. * Adjust validators. * Add more tests to promotion rule update. * Add dataloader. * Fix tests. * Test 'isGift' field. * Rename 'gifts' to 'giftIds'. * Adjust mutations after renaming. * Restore previous name in case of inputs. * Add PREVIEW_FEATURE flags.
* Do not allow updating 'OrderLine.quantity' when line is a gift. * Do not allow updating 'CheckoutLine.quantity' when line is a gift. * Do not allow deleting gift from checkout. * Do not allow deleting gifts from checkout. * Extend error with line ids. * Do not allow deleting gifts from order. * Fix test. * Add missing test. * Fix flaky test. * Do not allow to update gift lines at all, not only its quantity; change error codes. * Simplify validation. * Refactor flaky tests.
* Create discount object for gift reward * Create checkout line for gift reward * Update gift line creation * Handle race condition for gift line creation * Create CheckoutLineDiscount instead of CheckoutDiscount for gift reward * Gift reward calculation adjustment * Update complete_checkout for gift promotion * Add tests for checkout total calculations and CheckoutLinesAdd mutation * Add tests for webhooks * Add tests for checkout claculations * Add tests for avatax * Update create_discount_objects_for_catalogue_promotions * Update discount/utils.py * Add missing tests for _get_best_gift_reward * Clean duplicated isGift on CheckoutLine * Add more tests * Update gift line removal * Ensure that the gift line is created and returned when the gift reward is applicable during CheckoutCreate mutation * Rename invalidate_checkout_prices to invalidate_checkout * Ensure gift line is created in CheckoutCreateFromOrder mutation * Apply code review suggestions * Update giftreward calculations * Fix checkout calculations with catalogue and gift reward * Handle multiple gifts in _delete_gift_line * Move checkout creation logic to checkout mutation utils * Do not delete checkout line discounts obejcts in loop
* Set gifts limit per promotion rule * Apply code review suggestions
* Clear gift line in _clear_checkout_discount * Add tests for CheckoutAddPromoCode and CheckoutRemovePromoCode * Fix test * Adjust gift line removing * Apply code review suggestion
* Update gifts input in PromotionRuleUpdateInput * Add tests to gift validators
* Add tests for checkout mutations. * Add benchmarks for promotoin mutations. * Add checks if discount was created. * Appply review comments.
IKarbowiak
force-pushed
the
feature/gift-promotions
branch
from
February 7, 2024 13:18
a4e2ffa
to
bfc628e
Compare
tomaszszymanski129
approved these changes
Feb 8, 2024
8r2y5
approved these changes
Feb 8, 2024
korycins
approved these changes
Feb 8, 2024
fowczarek
approved these changes
Feb 8, 2024
kadewu
approved these changes
Feb 8, 2024
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Introduce a new
gift
reward inPromotion Rule
.PromotionRule
ofgift
reward type has list of availablegifts
that are product variants instances, which can be added to checkout as a giftisFlag
set toTrue
.PromotionRule
⏲️
Checkout calculations were measured for 100 order promotion rules (the maximum number of rules currently) and with 500 assigned gifts to each rule and the calculation time is below 1s.
Resolves: #12913
Impact
Docs
Pull Request Checklist
ADDED_IN_X
,PREVIEW_FEATURE
, etc.)