-
Notifications
You must be signed in to change notification settings - Fork 37
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[checkout] Update to ceb0a94a415d4e34f97c6ed41f7fd9dabf06deeb
- Loading branch information
1 parent
f2d1ce4
commit 3c3505c
Showing
33 changed files
with
889 additions
and
184 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
--- | ||
'@shopify/ui-extensions': minor | ||
'@shopify/ui-extensions-react': minor | ||
--- | ||
|
||
Support split shipping in Shipping option list and item targets. |
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
19 changes: 19 additions & 0 deletions
19
packages/ui-extensions-react/src/surfaces/checkout/hooks/delivery-group-list-target.ts
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
import type {DeliveryGroupList} from '@shopify/ui-extensions/checkout'; | ||
|
||
import {useApi} from './api'; | ||
import {useSubscription} from './subscription'; | ||
|
||
/** | ||
* Returns the delivery group list the extension is attached to. This hook can only be used by extensions in the following | ||
* extension targets: | ||
* - purchase.checkout.shipping-option-list.render-before | ||
* - purchase.checkout.shipping-option-list.render-after | ||
*/ | ||
export function useDeliveryGroupListTarget(): DeliveryGroupList | undefined { | ||
const api = useApi< | ||
| 'purchase.checkout.shipping-option-list.render-before' | ||
| 'purchase.checkout.shipping-option-list.render-after' | ||
>(); | ||
|
||
return useSubscription(api.target); | ||
} |
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
21 changes: 21 additions & 0 deletions
21
packages/ui-extensions-react/src/surfaces/checkout/hooks/delivery-selection-groups.ts
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
import type {DeliverySelectionGroup} from '@shopify/ui-extensions/checkout'; | ||
|
||
import {useApi} from './api'; | ||
import {useSubscription} from './subscription'; | ||
|
||
/** | ||
* Returns the list of delivery selection groups available to the buyers. This hook can only be used by extensions in the following | ||
* extension targets: | ||
* - purchase.checkout.shipping-option-list.render-before | ||
* - purchase.checkout.shipping-option-list.render-after | ||
*/ | ||
export function useDeliverySelectionGroups(): | ||
| DeliverySelectionGroup[] | ||
| undefined { | ||
const api = useApi< | ||
| 'purchase.checkout.shipping-option-list.render-before' | ||
| 'purchase.checkout.shipping-option-list.render-after' | ||
>(); | ||
|
||
return useSubscription(api.deliverySelectionGroups); | ||
} |
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
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
78 changes: 78 additions & 0 deletions
78
.../ui-extensions-react/src/surfaces/checkout/hooks/tests/delivery-group-list-target.test.ts
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,78 @@ | ||
import type { | ||
DeliveryGroup, | ||
ExtensionTarget, | ||
ShippingOption, | ||
} from '@shopify/ui-extensions/checkout'; | ||
|
||
import {useDeliveryGroupListTarget} from '../delivery-group-list-target'; | ||
|
||
import {mount, createMockStatefulRemoteSubscribable} from './mount'; | ||
|
||
describe('useDeliveryGroupListTarget', () => { | ||
it('returns the DeliveryGroupList target if it exists', async () => { | ||
const deliveryGroup: DeliveryGroup = { | ||
selectedDeliveryOption: { | ||
handle: 'shipping_method_1', | ||
}, | ||
groupType: 'oneTimePurchase', | ||
isDeliveryRequired: true, | ||
targetedCartLines: [ | ||
{ | ||
id: 'gid://shopify/CartLine/stable_id', | ||
}, | ||
], | ||
deliveryOptions: [ | ||
{ | ||
handle: 'shipping_method_1', | ||
title: 'Shipping method 1', | ||
description: undefined, | ||
type: 'shipping', | ||
carrier: { | ||
name: 'test carrier', | ||
}, | ||
cost: { | ||
amount: 10, | ||
currencyCode: 'USD', | ||
}, | ||
costAfterDiscounts: { | ||
amount: 10, | ||
currencyCode: 'USD', | ||
}, | ||
deliveryEstimate: { | ||
timeInTransit: { | ||
lower: 10000, | ||
upper: 10000, | ||
}, | ||
}, | ||
} as ShippingOption, | ||
], | ||
}; | ||
|
||
const deliveryGroup2: DeliveryGroup = { | ||
...deliveryGroup, | ||
targetedCartLines: [ | ||
{ | ||
id: 'gid://shopify/CartLine/stable_id_2', | ||
}, | ||
], | ||
}; | ||
|
||
const target: ExtensionTarget = | ||
'purchase.checkout.shipping-option-list.render-before'; | ||
|
||
const {value} = mount.hook(() => useDeliveryGroupListTarget(), { | ||
extensionApi: { | ||
extension: {target}, | ||
target: createMockStatefulRemoteSubscribable({ | ||
groupType: 'oneTimePurchase', | ||
deliveryGroups: [deliveryGroup, deliveryGroup2], | ||
}) as any, | ||
}, | ||
}); | ||
|
||
expect(value).toStrictEqual({ | ||
groupType: 'oneTimePurchase', | ||
deliveryGroups: [deliveryGroup, deliveryGroup2], | ||
}); | ||
}); | ||
}); |
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
57 changes: 57 additions & 0 deletions
57
...s/ui-extensions-react/src/surfaces/checkout/hooks/tests/delivery-selection-groups.test.ts
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,57 @@ | ||
import type {ExtensionTarget} from '@shopify/ui-extensions/checkout'; | ||
import {faker} from '@faker-js/faker'; | ||
|
||
import {useDeliverySelectionGroups} from '../delivery-selection-groups'; | ||
|
||
import {mount, createMockStatefulRemoteSubscribable} from './mount'; | ||
|
||
describe('useDeliverySelectionGroups', () => { | ||
it('returns deliverySelectionGroups if it exists', async () => { | ||
const deliverySelectionGroup = { | ||
handle: faker.string.uuid(), | ||
selected: false, | ||
title: 'Lowest price', | ||
associatedDeliveryOptions: [ | ||
{handle: faker.string.uuid()}, | ||
{handle: faker.string.uuid()}, | ||
], | ||
cost: { | ||
amount: 10, | ||
currencyCode: 'USD', | ||
}, | ||
costAfterDiscounts: { | ||
amount: 10, | ||
currencyCode: 'USD', | ||
}, | ||
}; | ||
|
||
const target: ExtensionTarget = | ||
'purchase.checkout.shipping-option-list.render-before'; | ||
|
||
const {value} = mount.hook(() => useDeliverySelectionGroups(), { | ||
extensionApi: { | ||
extension: {target}, | ||
deliverySelectionGroups: createMockStatefulRemoteSubscribable([ | ||
deliverySelectionGroup, | ||
]) as any, | ||
}, | ||
}); | ||
|
||
expect(value).toStrictEqual([deliverySelectionGroup]); | ||
}); | ||
|
||
it('returns undefined if delivery selection groups are missing', async () => { | ||
const target: ExtensionTarget = | ||
'purchase.checkout.shipping-option-list.render-before'; | ||
|
||
const {value} = mount.hook(() => useDeliverySelectionGroups(), { | ||
extensionApi: { | ||
extension: {target}, | ||
deliverySelectionGroups: | ||
createMockStatefulRemoteSubscribable(undefined), | ||
}, | ||
}); | ||
|
||
expect(value).toBeUndefined(); | ||
}); | ||
}); |
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
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
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
Oops, something went wrong.