Skip to content

Commit

Permalink
feat(core-flows, types): update shipping methods upon cart ops (medus…
Browse files Browse the repository at this point in the history
…ajs#10382)

* feat(core-flows,framework,medusa): list shipping options pass in cart as pricing context

* chore: add test for shipping options returning free shipping

* feat(core-flows, types): update shipping methods upon cart ops

* chore: fix specs

* chore: fix bugs + specs

* Update update-shipping-methods.ts

Co-authored-by: Oli Juhl <[email protected]>

* Update mutations.ts

Co-authored-by: Oli Juhl <[email protected]>

* chore: undo refresh changes

* chore: merge with latest

* chore: address PR comments

* chore: fix conflicts

* chore: fix specs

* chore: address reviews

---------

Co-authored-by: Oli Juhl <[email protected]>
  • Loading branch information
riqwan and olivermrbl authored Dec 8, 2024
1 parent f95c4e2 commit 9e797dc
Show file tree
Hide file tree
Showing 21 changed files with 1,164 additions and 1,239 deletions.
411 changes: 411 additions & 0 deletions integration-tests/http/__tests__/cart/store/cart.spec.ts

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -152,12 +152,12 @@ medusaIntegrationTestRunner({
amount: 500,
rules: [
{
attribute: "total",
attribute: "item_total",
operator: "gte",
value: 100,
},
{
attribute: "total",
attribute: "item_total",
operator: "lte",
value: 200,
},
Expand Down Expand Up @@ -220,12 +220,12 @@ medusaIntegrationTestRunner({
rules_count: 2,
price_rules: expect.arrayContaining([
expect.objectContaining({
attribute: "total",
attribute: "item_total",
operator: "gte",
value: "100",
}),
expect.objectContaining({
attribute: "total",
attribute: "item_total",
operator: "lte",
value: "200",
}),
Expand Down Expand Up @@ -329,7 +329,7 @@ medusaIntegrationTestRunner({
amount: 500,
rules: [
{
attribute: "total",
attribute: "item_total",
operator: "gt",
value: 200,
},
Expand Down Expand Up @@ -380,7 +380,7 @@ medusaIntegrationTestRunner({
rules_count: 2,
price_rules: expect.arrayContaining([
expect.objectContaining({
attribute: "total",
attribute: "item_total",
operator: "gt",
value: "200",
}),
Expand Down Expand Up @@ -460,7 +460,7 @@ medusaIntegrationTestRunner({
amount: 500,
rules: [
{
attribute: "total",
attribute: "item_total",
operator: "not_whitelisted",
value: 100,
},
Expand Down Expand Up @@ -498,7 +498,7 @@ medusaIntegrationTestRunner({
amount: 500,
rules: [
{
attribute: "total",
attribute: "item_total",
operator: "gt",
value: "string",
},
Expand Down Expand Up @@ -628,7 +628,7 @@ medusaIntegrationTestRunner({
amount: 5,
rules: [
{
attribute: "total",
attribute: "item_total",
operator: "gt",
value: 200,
},
Expand Down Expand Up @@ -704,7 +704,7 @@ medusaIntegrationTestRunner({
amount: 5,
price_rules: [
expect.objectContaining({
attribute: "total",
attribute: "item_total",
operator: "gt",
value: "200",
}),
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,4 @@
import { medusaIntegrationTestRunner } from "@medusajs/test-utils"
import {
IFulfillmentModuleService,
IRegionModuleService,
} from "@medusajs/types"
import { ContainerRegistrationKeys, Modules } from "@medusajs/utils"
import {
createAdminUser,
generatePublishableKey,
Expand All @@ -20,9 +15,6 @@ medusaIntegrationTestRunner({
testSuite: ({ dbConnection, getContainer, api }) => {
describe("Store: Shipping Option API", () => {
let appContainer
let fulfillmentModule: IFulfillmentModuleService
let regionService: IRegionModuleService

let salesChannel
let region
let regionTwo
Expand All @@ -36,40 +28,34 @@ medusaIntegrationTestRunner({

beforeAll(async () => {
appContainer = getContainer()
fulfillmentModule = appContainer.resolve(Modules.FULFILLMENT)
regionService = appContainer.resolve(Modules.REGION)
})

beforeEach(async () => {
const publishableKey = await generatePublishableKey(appContainer)
storeHeaders = generateStoreHeaders({ publishableKey })

await createAdminUser(dbConnection, adminHeaders, appContainer)
const remoteLinkService = appContainer.resolve(
ContainerRegistrationKeys.REMOTE_LINK
)

region = await regionService.createRegions({
name: "Test region",
countries: ["US"],
currency_code: "usd",
})

regionTwo = await regionService.createRegions({
name: "Test region two",
countries: ["DK"],
currency_code: "dkk",
})
region = (
await api.post(
"/admin/regions",
{ name: "US", currency_code: "usd", countries: ["US"] },
adminHeaders
)
).data.region

await api.post(
"/admin/price-preferences",
{
attribute: "region_id",
value: regionTwo.id,
is_tax_inclusive: true,
},
adminHeaders
)
regionTwo = (
await api.post(
"/admin/regions",
{
name: "Test region two",
currency_code: "dkk",
countries: ["DK"],
is_tax_inclusive: true,
},
adminHeaders
)
).data.region

salesChannel = (
await api.post(
Expand Down Expand Up @@ -116,50 +102,49 @@ medusaIntegrationTestRunner({
stockLocation = (
await api.post(
`/admin/stock-locations`,
{
name: "test location",
},
{ name: "test location" },
adminHeaders
)
).data.stock_location

shippingProfile = await fulfillmentModule.createShippingProfiles({
name: "Test",
type: "default",
})
await api.post(
`/admin/stock-locations/${stockLocation.id}/sales-channels`,
{ add: [salesChannel.id] },
adminHeaders
)

fulfillmentSet = await fulfillmentModule.createFulfillmentSets({
name: "Test",
type: "test-type",
service_zones: [
shippingProfile = (
await api.post(
`/admin/shipping-profiles`,
{ name: "Test", type: "default" },
adminHeaders
)
).data.shipping_profile

const fulfillmentSets = (
await api.post(
`/admin/stock-locations/${stockLocation.id}/fulfillment-sets?fields=*fulfillment_sets`,
{
name: "Test",
type: "test-type",
},
adminHeaders
)
).data.stock_location.fulfillment_sets

fulfillmentSet = (
await api.post(
`/admin/fulfillment-sets/${fulfillmentSets[0].id}/service-zones`,
{
name: "Test",
geo_zones: [
{ type: "country", country_code: "us" },
{ type: "country", country_code: "dk" },
],
},
],
})

await remoteLinkService.create([
{
[Modules.SALES_CHANNEL]: {
sales_channel_id: salesChannel.id,
},
[Modules.STOCK_LOCATION]: {
stock_location_id: stockLocation.id,
},
},
{
[Modules.STOCK_LOCATION]: {
stock_location_id: stockLocation.id,
},
[Modules.FULFILLMENT]: {
fulfillment_set_id: fulfillmentSet.id,
},
},
])
adminHeaders
)
).data.fulfillment_set

await api.post(
`/admin/stock-locations/${stockLocation.id}/fulfillment-providers`,
Expand Down Expand Up @@ -196,7 +181,7 @@ medusaIntegrationTestRunner({
rules: [
{
operator: "gt",
attribute: "total",
attribute: "item_total",
value: 2000,
},
],
Expand Down Expand Up @@ -246,8 +231,11 @@ medusaIntegrationTestRunner({
expect.objectContaining({
id: shippingOption.id,
name: "Test shipping option",
amount: 1100,
price_type: "flat",
amount: 1100,
calculated_price: expect.objectContaining({
calculated_amount: 1100,
}),
})
)

Expand All @@ -272,8 +260,12 @@ medusaIntegrationTestRunner({
id: shippingOption.id,
name: "Test shipping option",
amount: 500,
price_type: "flat",
is_tax_inclusive: true,
calculated_price: expect.objectContaining({
calculated_amount: 500,
is_calculated_price_tax_inclusive: true,
}),
price_type: "flat",
})
)
})
Expand Down Expand Up @@ -313,6 +305,9 @@ medusaIntegrationTestRunner({
name: "Test shipping option",
// Free shipping due to cart total being greater than 2000
amount: 0,
calculated_price: expect.objectContaining({
calculated_amount: 0,
}),
price_type: "flat",
})
)
Expand Down
Loading

0 comments on commit 9e797dc

Please sign in to comment.