From 09247e00efec132103785fdfac24f782c2a80a84 Mon Sep 17 00:00:00 2001 From: Sebastian Rindom Date: Mon, 4 Oct 2021 17:44:25 +0200 Subject: [PATCH 1/5] hotfix(medusa): shipping address updates --- packages/medusa/src/services/cart.js | 66 ++++++++++++++-------------- 1 file changed, 34 insertions(+), 32 deletions(-) diff --git a/packages/medusa/src/services/cart.js b/packages/medusa/src/services/cart.js index fede0289d8..75d98c0440 100644 --- a/packages/medusa/src/services/cart.js +++ b/packages/medusa/src/services/cart.js @@ -160,7 +160,7 @@ class CartService extends BaseService { "total", ] - const totalsToSelect = select.filter(v => totalFields.includes(v)) + const totalsToSelect = select.filter((v) => totalFields.includes(v)) if (totalsToSelect.length > 0) { const relationSet = new Set(relations) relationSet.add("items") @@ -173,7 +173,7 @@ class CartService extends BaseService { relationSet.add("region") relations = [...relationSet] - select = select.filter(v => !totalFields.includes(v)) + select = select.filter((v) => !totalFields.includes(v)) } return { @@ -273,7 +273,7 @@ class CartService extends BaseService { * @return {Promise} the result of the create operation */ async create(data) { - return this.atomicPhase_(async manager => { + return this.atomicPhase_(async (manager) => { const cartRepo = manager.getCustomRepository(this.cartRepository_) const addressRepo = manager.getCustomRepository(this.addressRepository_) const { region_id } = data @@ -342,7 +342,7 @@ class CartService extends BaseService { * @retur {Promise} the result of the update operation */ async removeLineItem(cartId, lineItemId) { - return this.atomicPhase_(async manager => { + return this.atomicPhase_(async (manager) => { const cart = await this.retrieve(cartId, { relations: [ "items", @@ -352,7 +352,7 @@ class CartService extends BaseService { ], }) - const lineItem = cart.items.find(li => li.id === lineItemId) + const lineItem = cart.items.find((li) => li.id === lineItemId) if (!lineItem) { return cart } @@ -421,7 +421,7 @@ class CartService extends BaseService { * @return {Promise} the result of the update operation */ async addLineItem(cartId, lineItem) { - return this.atomicPhase_(async manager => { + return this.atomicPhase_(async (manager) => { const cart = await this.retrieve(cartId, { relations: [ "shipping_methods", @@ -434,7 +434,7 @@ class CartService extends BaseService { let currentItem if (lineItem.should_merge) { - currentItem = cart.items.find(line => { + currentItem = cart.items.find((line) => { if (line.should_merge && line.variant_id === lineItem.variant_id) { return _.isEqual(line.metadata, lineItem.metadata) } @@ -500,13 +500,13 @@ class CartService extends BaseService { * @return {Promise} the result of the update operation */ async updateLineItem(cartId, lineItemId, lineItemUpdate) { - return this.atomicPhase_(async manager => { + return this.atomicPhase_(async (manager) => { const cart = await this.retrieve(cartId, { relations: ["items", "payment_sessions"], }) // Ensure that the line item exists in the cart - const lineItemExists = cart.items.find(i => i.id === lineItemId) + const lineItemExists = cart.items.find((i) => i.id === lineItemId) if (!lineItemExists) { throw new MedusaError( MedusaError.Types.INVALID_DATA, @@ -553,7 +553,7 @@ class CartService extends BaseService { // if any free shipping discounts, we ensure to update shipping method amount if (shouldAdd) { await Promise.all( - cart.shipping_methods.map(async sm => { + cart.shipping_methods.map(async (sm) => { const smRepo = this.manager_.getCustomRepository( this.shippingMethodRepository_ ) @@ -568,7 +568,7 @@ class CartService extends BaseService { ) } else { await Promise.all( - cart.shipping_methods.map(async sm => { + cart.shipping_methods.map(async (sm) => { const smRepo = this.manager_.getCustomRepository( this.shippingMethodRepository_ ) @@ -584,7 +584,7 @@ class CartService extends BaseService { } async update(cartId, update) { - return this.atomicPhase_(async manager => { + return this.atomicPhase_(async (manager) => { const cartRepo = manager.getCustomRepository(this.cartRepository_) const cart = await this.retrieve(cartId, { select: [ @@ -611,7 +611,9 @@ class CartService extends BaseService { }) if ("region_id" in update) { - await this.setRegion_(cart, update.region_id, update.country_code) + const countryCode = + update.country_code || update.shipping_address?.country_code + await this.setRegion_(cart, update.region_id, countryCode) } if ("customer_id" in update) { @@ -936,7 +938,7 @@ class CartService extends BaseService { const toParse = [...cart.discounts, discount] let sawNotShipping = false - const newDiscounts = toParse.map(d => { + const newDiscounts = toParse.map((d) => { const drule = d.rule switch (drule.type) { case "free_shipping": @@ -966,7 +968,7 @@ class CartService extends BaseService { * @return {Promise} the resulting cart */ async removeDiscount(cartId, discountCode) { - return this.atomicPhase_(async manager => { + return this.atomicPhase_(async (manager) => { const cart = await this.retrieve(cartId, { relations: ["discounts", "payment_sessions", "shipping_methods"], }) @@ -975,7 +977,7 @@ class CartService extends BaseService { await this.adjustFreeShipping_(cart, false) } - cart.discounts = cart.discounts.filter(d => d.code !== discountCode) + cart.discounts = cart.discounts.filter((d) => d.code !== discountCode) const cartRepo = manager.getCustomRepository(this.cartRepository_) @@ -1006,7 +1008,7 @@ class CartService extends BaseService { * Updates the currently selected payment session. */ async updatePaymentSession(cartId, update) { - return this.atomicPhase_(async manager => { + return this.atomicPhase_(async (manager) => { const cart = await this.retrieve(cartId, { relations: ["payment_sessions"], }) @@ -1040,7 +1042,7 @@ class CartService extends BaseService { * @return {Promise} the resulting cart */ async authorizePayment(cartId, context = {}) { - return this.atomicPhase_(async manager => { + return this.atomicPhase_(async (manager) => { const cartRepository = manager.getCustomRepository(this.cartRepository_) const cart = await this.retrieve(cartId, { @@ -1087,7 +1089,7 @@ class CartService extends BaseService { * @returns {Promise} result of update operation */ async setPaymentSession(cartId, providerId) { - return this.atomicPhase_(async manager => { + return this.atomicPhase_(async (manager) => { const psRepo = manager.getCustomRepository(this.paymentSessionRepository_) const cart = await this.retrieve(cartId, { @@ -1116,13 +1118,13 @@ class CartService extends BaseService { } await Promise.all( - cart.payment_sessions.map(ps => { + cart.payment_sessions.map((ps) => { return psRepo.save({ ...ps, is_selected: null }) }) ) const sess = cart.payment_sessions.find( - ps => ps.provider_id === providerId + (ps) => ps.provider_id === providerId ) sess.is_selected = true @@ -1148,7 +1150,7 @@ class CartService extends BaseService { * @returns {Promise} the result of the update operation. */ async setPaymentSessions(cartOrCartId) { - return this.atomicPhase_(async manager => { + return this.atomicPhase_(async (manager) => { const psRepo = manager.getCustomRepository(this.paymentSessionRepository_) let cartId = @@ -1231,7 +1233,7 @@ class CartService extends BaseService { * @returns {Promise} the resulting cart. */ async deletePaymentSession(cartId, providerId) { - return this.atomicPhase_(async manager => { + return this.atomicPhase_(async (manager) => { const cart = await this.retrieve(cartId, { relations: ["payment_sessions"], }) @@ -1272,7 +1274,7 @@ class CartService extends BaseService { * @returns {Promise} the resulting cart. */ async refreshPaymentSession(cartId, providerId) { - return this.atomicPhase_(async manager => { + return this.atomicPhase_(async (manager) => { const cart = await this.retrieve(cartId, { relations: ["payment_sessions"], }) @@ -1311,7 +1313,7 @@ class CartService extends BaseService { * @return {Promise} the result of the update operation */ async addShippingMethod(cartId, optionId, data) { - return this.atomicPhase_(async manager => { + return this.atomicPhase_(async (manager) => { const cart = await this.retrieve(cartId, { select: ["subtotal"], relations: [ @@ -1395,7 +1397,7 @@ class CartService extends BaseService { if (cart.items.length) { cart.items = await Promise.all( cart.items - .map(async item => { + .map(async (item) => { const availablePrice = await this.productVariantService_ .getRegionPrice(item.variant_id, regionId) .catch(() => undefined) @@ -1474,20 +1476,20 @@ class CartService extends BaseService { } if (cart.discounts && cart.discounts.length) { - const newDiscounts = cart.discounts.map(d => { + const newDiscounts = cart.discounts.map((d) => { if (d.regions.find(({ id }) => id === regionId)) { return d } }) - cart.discounts = newDiscounts.filter(d => !!d) + cart.discounts = newDiscounts.filter((d) => !!d) } cart.gift_cards = [] if (cart.payment_sessions && cart.payment_sessions.length) { await Promise.all( - cart.payment_sessions.map(ps => + cart.payment_sessions.map((ps) => this.paymentProviderService_ .withTransaction(this.manager_) .deleteSession(ps) @@ -1505,7 +1507,7 @@ class CartService extends BaseService { * not found. */ async delete(cartId) { - return this.atomicPhase_(async manager => { + return this.atomicPhase_(async (manager) => { const cart = await this.retrieve(cartId, { relations: ["items", "discounts", "payment_sessions"], }) @@ -1539,7 +1541,7 @@ class CartService extends BaseService { * @return {Promise} resolves to the updated result. */ async setMetadata(cartId, key, value) { - return this.atomicPhase_(async manager => { + return this.atomicPhase_(async (manager) => { const cartRepo = manager.getCustomRepository(this.cartRepository_) const validatedId = this.validateId_(cartId) @@ -1573,7 +1575,7 @@ class CartService extends BaseService { * @return {Promise} resolves to the updated result. */ async deleteMetadata(cartId, key) { - return this.atomicPhase_(async manager => { + return this.atomicPhase_(async (manager) => { const cartRepo = manager.getCustomRepository(this.cartRepository_) const validatedId = this.validateId_(cartId) From 5a67d1e7fd3d9da9dca0781d0feab60db1f1099a Mon Sep 17 00:00:00 2001 From: Sebastian Rindom Date: Mon, 4 Oct 2021 18:06:19 +0200 Subject: [PATCH 2/5] fix: prettier --- packages/medusa/src/services/cart.js | 62 ++++++++++++++-------------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/packages/medusa/src/services/cart.js b/packages/medusa/src/services/cart.js index 75d98c0440..e0755d0b2c 100644 --- a/packages/medusa/src/services/cart.js +++ b/packages/medusa/src/services/cart.js @@ -160,7 +160,7 @@ class CartService extends BaseService { "total", ] - const totalsToSelect = select.filter((v) => totalFields.includes(v)) + const totalsToSelect = select.filter(v => totalFields.includes(v)) if (totalsToSelect.length > 0) { const relationSet = new Set(relations) relationSet.add("items") @@ -173,7 +173,7 @@ class CartService extends BaseService { relationSet.add("region") relations = [...relationSet] - select = select.filter((v) => !totalFields.includes(v)) + select = select.filter(v => !totalFields.includes(v)) } return { @@ -273,7 +273,7 @@ class CartService extends BaseService { * @return {Promise} the result of the create operation */ async create(data) { - return this.atomicPhase_(async (manager) => { + return this.atomicPhase_(async manager => { const cartRepo = manager.getCustomRepository(this.cartRepository_) const addressRepo = manager.getCustomRepository(this.addressRepository_) const { region_id } = data @@ -342,7 +342,7 @@ class CartService extends BaseService { * @retur {Promise} the result of the update operation */ async removeLineItem(cartId, lineItemId) { - return this.atomicPhase_(async (manager) => { + return this.atomicPhase_(async manager => { const cart = await this.retrieve(cartId, { relations: [ "items", @@ -352,7 +352,7 @@ class CartService extends BaseService { ], }) - const lineItem = cart.items.find((li) => li.id === lineItemId) + const lineItem = cart.items.find(li => li.id === lineItemId) if (!lineItem) { return cart } @@ -421,7 +421,7 @@ class CartService extends BaseService { * @return {Promise} the result of the update operation */ async addLineItem(cartId, lineItem) { - return this.atomicPhase_(async (manager) => { + return this.atomicPhase_(async manager => { const cart = await this.retrieve(cartId, { relations: [ "shipping_methods", @@ -434,7 +434,7 @@ class CartService extends BaseService { let currentItem if (lineItem.should_merge) { - currentItem = cart.items.find((line) => { + currentItem = cart.items.find(line => { if (line.should_merge && line.variant_id === lineItem.variant_id) { return _.isEqual(line.metadata, lineItem.metadata) } @@ -500,13 +500,13 @@ class CartService extends BaseService { * @return {Promise} the result of the update operation */ async updateLineItem(cartId, lineItemId, lineItemUpdate) { - return this.atomicPhase_(async (manager) => { + return this.atomicPhase_(async manager => { const cart = await this.retrieve(cartId, { relations: ["items", "payment_sessions"], }) // Ensure that the line item exists in the cart - const lineItemExists = cart.items.find((i) => i.id === lineItemId) + const lineItemExists = cart.items.find(i => i.id === lineItemId) if (!lineItemExists) { throw new MedusaError( MedusaError.Types.INVALID_DATA, @@ -553,7 +553,7 @@ class CartService extends BaseService { // if any free shipping discounts, we ensure to update shipping method amount if (shouldAdd) { await Promise.all( - cart.shipping_methods.map(async (sm) => { + cart.shipping_methods.map(async sm => { const smRepo = this.manager_.getCustomRepository( this.shippingMethodRepository_ ) @@ -568,7 +568,7 @@ class CartService extends BaseService { ) } else { await Promise.all( - cart.shipping_methods.map(async (sm) => { + cart.shipping_methods.map(async sm => { const smRepo = this.manager_.getCustomRepository( this.shippingMethodRepository_ ) @@ -584,7 +584,7 @@ class CartService extends BaseService { } async update(cartId, update) { - return this.atomicPhase_(async (manager) => { + return this.atomicPhase_(async manager => { const cartRepo = manager.getCustomRepository(this.cartRepository_) const cart = await this.retrieve(cartId, { select: [ @@ -938,7 +938,7 @@ class CartService extends BaseService { const toParse = [...cart.discounts, discount] let sawNotShipping = false - const newDiscounts = toParse.map((d) => { + const newDiscounts = toParse.map(d => { const drule = d.rule switch (drule.type) { case "free_shipping": @@ -968,7 +968,7 @@ class CartService extends BaseService { * @return {Promise} the resulting cart */ async removeDiscount(cartId, discountCode) { - return this.atomicPhase_(async (manager) => { + return this.atomicPhase_(async manager => { const cart = await this.retrieve(cartId, { relations: ["discounts", "payment_sessions", "shipping_methods"], }) @@ -977,7 +977,7 @@ class CartService extends BaseService { await this.adjustFreeShipping_(cart, false) } - cart.discounts = cart.discounts.filter((d) => d.code !== discountCode) + cart.discounts = cart.discounts.filter(d => d.code !== discountCode) const cartRepo = manager.getCustomRepository(this.cartRepository_) @@ -1008,7 +1008,7 @@ class CartService extends BaseService { * Updates the currently selected payment session. */ async updatePaymentSession(cartId, update) { - return this.atomicPhase_(async (manager) => { + return this.atomicPhase_(async manager => { const cart = await this.retrieve(cartId, { relations: ["payment_sessions"], }) @@ -1042,7 +1042,7 @@ class CartService extends BaseService { * @return {Promise} the resulting cart */ async authorizePayment(cartId, context = {}) { - return this.atomicPhase_(async (manager) => { + return this.atomicPhase_(async manager => { const cartRepository = manager.getCustomRepository(this.cartRepository_) const cart = await this.retrieve(cartId, { @@ -1089,7 +1089,7 @@ class CartService extends BaseService { * @returns {Promise} result of update operation */ async setPaymentSession(cartId, providerId) { - return this.atomicPhase_(async (manager) => { + return this.atomicPhase_(async manager => { const psRepo = manager.getCustomRepository(this.paymentSessionRepository_) const cart = await this.retrieve(cartId, { @@ -1118,13 +1118,13 @@ class CartService extends BaseService { } await Promise.all( - cart.payment_sessions.map((ps) => { + cart.payment_sessions.map(ps => { return psRepo.save({ ...ps, is_selected: null }) }) ) const sess = cart.payment_sessions.find( - (ps) => ps.provider_id === providerId + ps => ps.provider_id === providerId ) sess.is_selected = true @@ -1150,7 +1150,7 @@ class CartService extends BaseService { * @returns {Promise} the result of the update operation. */ async setPaymentSessions(cartOrCartId) { - return this.atomicPhase_(async (manager) => { + return this.atomicPhase_(async manager => { const psRepo = manager.getCustomRepository(this.paymentSessionRepository_) let cartId = @@ -1233,7 +1233,7 @@ class CartService extends BaseService { * @returns {Promise} the resulting cart. */ async deletePaymentSession(cartId, providerId) { - return this.atomicPhase_(async (manager) => { + return this.atomicPhase_(async manager => { const cart = await this.retrieve(cartId, { relations: ["payment_sessions"], }) @@ -1274,7 +1274,7 @@ class CartService extends BaseService { * @returns {Promise} the resulting cart. */ async refreshPaymentSession(cartId, providerId) { - return this.atomicPhase_(async (manager) => { + return this.atomicPhase_(async manager => { const cart = await this.retrieve(cartId, { relations: ["payment_sessions"], }) @@ -1313,7 +1313,7 @@ class CartService extends BaseService { * @return {Promise} the result of the update operation */ async addShippingMethod(cartId, optionId, data) { - return this.atomicPhase_(async (manager) => { + return this.atomicPhase_(async manager => { const cart = await this.retrieve(cartId, { select: ["subtotal"], relations: [ @@ -1397,7 +1397,7 @@ class CartService extends BaseService { if (cart.items.length) { cart.items = await Promise.all( cart.items - .map(async (item) => { + .map(async item => { const availablePrice = await this.productVariantService_ .getRegionPrice(item.variant_id, regionId) .catch(() => undefined) @@ -1476,20 +1476,20 @@ class CartService extends BaseService { } if (cart.discounts && cart.discounts.length) { - const newDiscounts = cart.discounts.map((d) => { + const newDiscounts = cart.discounts.map(d => { if (d.regions.find(({ id }) => id === regionId)) { return d } }) - cart.discounts = newDiscounts.filter((d) => !!d) + cart.discounts = newDiscounts.filter(d => !!d) } cart.gift_cards = [] if (cart.payment_sessions && cart.payment_sessions.length) { await Promise.all( - cart.payment_sessions.map((ps) => + cart.payment_sessions.map(ps => this.paymentProviderService_ .withTransaction(this.manager_) .deleteSession(ps) @@ -1507,7 +1507,7 @@ class CartService extends BaseService { * not found. */ async delete(cartId) { - return this.atomicPhase_(async (manager) => { + return this.atomicPhase_(async manager => { const cart = await this.retrieve(cartId, { relations: ["items", "discounts", "payment_sessions"], }) @@ -1541,7 +1541,7 @@ class CartService extends BaseService { * @return {Promise} resolves to the updated result. */ async setMetadata(cartId, key, value) { - return this.atomicPhase_(async (manager) => { + return this.atomicPhase_(async manager => { const cartRepo = manager.getCustomRepository(this.cartRepository_) const validatedId = this.validateId_(cartId) @@ -1575,7 +1575,7 @@ class CartService extends BaseService { * @return {Promise} resolves to the updated result. */ async deleteMetadata(cartId, key) { - return this.atomicPhase_(async (manager) => { + return this.atomicPhase_(async manager => { const cartRepo = manager.getCustomRepository(this.cartRepository_) const validatedId = this.validateId_(cartId) From 38813ec66f23526054f7e35adf4157ce98703167 Mon Sep 17 00:00:00 2001 From: Sebastian Rindom Date: Tue, 5 Oct 2021 12:36:43 +0200 Subject: [PATCH 3/5] fix: add integration test --- .../admin/__snapshots__/auth.js.snap | 15 +++- .../store/__snapshots__/auth.js.snap | 17 +++++ integration-tests/api/__tests__/store/cart.js | 41 +++++++++- integration-tests/api/helpers/cart-seeder.js | 22 ++++++ integration-tests/api/package.json | 6 +- integration-tests/api/yarn.lock | 76 ++++++++++--------- packages/medusa/src/services/cart.js | 74 +++++++++--------- 7 files changed, 172 insertions(+), 79 deletions(-) diff --git a/integration-tests/api/__tests__/admin/__snapshots__/auth.js.snap b/integration-tests/api/__tests__/admin/__snapshots__/auth.js.snap index 3a3a924b4b..bd72f27516 100644 --- a/integration-tests/api/__tests__/admin/__snapshots__/auth.js.snap +++ b/integration-tests/api/__tests__/admin/__snapshots__/auth.js.snap @@ -1,5 +1,19 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`/admin/auth creates admin session correctly 1`] = ` +Object { + "api_token": "test_token", + "created_at": Any, + "deleted_at": null, + "email": "admin@medusa.js", + "first_name": null, + "id": "admin_user", + "last_name": null, + "metadata": null, + "updated_at": Any, +} +`; + exports[`/admin/discounts creates admin session correctly 1`] = ` Object { "api_token": "test_token", @@ -13,4 +27,3 @@ Object { "updated_at": Any, } `; - diff --git a/integration-tests/api/__tests__/store/__snapshots__/auth.js.snap b/integration-tests/api/__tests__/store/__snapshots__/auth.js.snap index aaae35ba9c..5bfeffc442 100644 --- a/integration-tests/api/__tests__/store/__snapshots__/auth.js.snap +++ b/integration-tests/api/__tests__/store/__snapshots__/auth.js.snap @@ -1,5 +1,22 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`/admin/auth creates store session correctly 1`] = ` +Object { + "billing_address_id": null, + "created_at": Any, + "deleted_at": null, + "email": "test@testesen.dk", + "first_name": "test", + "has_account": true, + "id": Any, + "last_name": "testesen", + "metadata": null, + "orders": Array [], + "phone": "12345678", + "updated_at": Any, +} +`; + exports[`/admin/discounts creates store session correctly 1`] = ` Object { "billing_address_id": null, diff --git a/integration-tests/api/__tests__/store/cart.js b/integration-tests/api/__tests__/store/cart.js index 034601e839..47c43fe904 100644 --- a/integration-tests/api/__tests__/store/cart.js +++ b/integration-tests/api/__tests__/store/cart.js @@ -135,8 +135,8 @@ describe("/store/carts", () => { const api = useApi() try { - await api.post("/store/carts/test-cart", { - discounts: [{ code: "CREATED" }], + const { data } = await api.post("/store/carts/test-cart", { + discounts: [{ code: "LIMIT_REACHED" }], }) } catch (error) { expect(error.response.status).toEqual(400) @@ -648,4 +648,41 @@ describe("/store/carts", () => { expect(response.status).toEqual(200) }) }) + + describe("shipping address + region updates", () => { + beforeEach(async () => { + try { + await cartSeeder(dbConnection) + } catch (err) { + console.log(err) + throw err + } + }) + + afterEach(async () => { + await doAfterEach() + }) + + it("updates region only - single to multipe countries", async () => { + const api = useApi() + + const { data, status } = await api + .post(`/store/carts/test-cart`, { + region_id: `test-region-multiple`, + }) + .catch((err) => { + console.log(err) + throw err + }) + + expect(status).toEqual(200) + expect(data.cart.region_id).toEqual("test-region-multiple") + expect(data.cart.shipping_address).toMatchSnapshot({ + id: expect.any(String), + country_code: null, + }) + }) + + // it("updates cart.customer_id on cart retrieval if cart.customer_id differ from session customer", async () => {}) + }) }) diff --git a/integration-tests/api/helpers/cart-seeder.js b/integration-tests/api/helpers/cart-seeder.js index f7e499368a..f2e8b08803 100644 --- a/integration-tests/api/helpers/cart-seeder.js +++ b/integration-tests/api/helpers/cart-seeder.js @@ -108,6 +108,28 @@ module.exports = async (connection, data = {}) => { tenPercent.rule = tenPercentRule await manager.save(tenPercent) + const exceed = await manager.create(Discount, { + id: "test-discount-reached", + code: "LIMIT_REACHED", + usage_limit: 1, + usage_count: 1, + is_dynamic: false, + is_disabled: false, + }) + + const drExceed = await manager.create(DiscountRule, { + id: "test-discount-rule-reached", + description: "Created", + type: "fixed", + value: 10000, + allocation: "total", + }) + + exceed.rule = drExceed + exceed.regions = [r] + + await manager.save(exceed) + const d = await manager.create(Discount, { id: "test-discount", code: "CREATED", diff --git a/integration-tests/api/package.json b/integration-tests/api/package.json index 7abd7c9b69..43d74c3d43 100644 --- a/integration-tests/api/package.json +++ b/integration-tests/api/package.json @@ -8,15 +8,15 @@ "build": "babel src -d dist --extensions \".ts,.js\"" }, "dependencies": { - "@medusajs/medusa": "1.1.40-dev-1631630701835", - "medusa-interfaces": "1.1.21-dev-1631630701835", + "@medusajs/medusa": "1.1.41-dev-1633423310981", + "medusa-interfaces": "1.1.23-dev-1633423310981", "typeorm": "^0.2.31" }, "devDependencies": { "@babel/cli": "^7.12.10", "@babel/core": "^7.12.10", "@babel/node": "^7.12.10", - "babel-preset-medusa-package": "1.1.13-dev-1631630701835", + "babel-preset-medusa-package": "1.1.15-dev-1633423310981", "jest": "^26.6.3" } } diff --git a/integration-tests/api/yarn.lock b/integration-tests/api/yarn.lock index 2ba33d481a..c0f6dd571e 100644 --- a/integration-tests/api/yarn.lock +++ b/integration-tests/api/yarn.lock @@ -1223,10 +1223,10 @@ "@types/yargs" "^15.0.0" chalk "^4.0.0" -"@medusajs/medusa-cli@1.1.16-dev-1631630701835": - version "1.1.16-dev-1631630701835" - resolved "http://localhost:4873/@medusajs%2fmedusa-cli/-/medusa-cli-1.1.16-dev-1631630701835.tgz#7fcb95cb9a45e0367cc5becfff7f5d1533b46b5f" - integrity sha512-UomtR8B1lBFDb3h1y060fOcWcZi812Jwt8Kgjxqtpn+aRj6Bu7+I3WJGHBVSx4VnUBINSYbtiQMpEwqVGTCKnw== +"@medusajs/medusa-cli@1.1.18-dev-1633423310981": + version "1.1.18-dev-1633423310981" + resolved "http://localhost:4873/@medusajs%2fmedusa-cli/-/medusa-cli-1.1.18-dev-1633423310981.tgz#70355ecb8382e62f44af1b0755bfe7a999e4c16c" + integrity sha512-LGMPQrjP4ghpbzpdRInLeTGATBr3nEvuKP98/0zODoZtgHodbxgUjWFYiiy2zoBGp21GcQ3KZx60kKS9z1zSzw== dependencies: "@babel/polyfill" "^7.8.7" "@babel/runtime" "^7.9.6" @@ -1244,8 +1244,8 @@ is-valid-path "^0.1.1" joi-objectid "^3.0.1" meant "^1.0.1" - medusa-core-utils "1.1.20-dev-1631630701835" - medusa-telemetry "0.0.3-dev-1631630701835" + medusa-core-utils "1.1.22-dev-1633423310981" + medusa-telemetry "0.0.5-dev-1633423310981" netrc-parser "^3.1.6" open "^8.0.6" ora "^5.4.1" @@ -1259,13 +1259,13 @@ winston "^3.3.3" yargs "^15.3.1" -"@medusajs/medusa@1.1.40-dev-1631630701835": - version "1.1.40-dev-1631630701835" - resolved "http://localhost:4873/@medusajs%2fmedusa/-/medusa-1.1.40-dev-1631630701835.tgz#fa67ceda5887fd31196b3bcfd3115a9e02d68448" - integrity sha512-svPsKonuBrwRgtYod7U7ho9bN84K7N/QorMJG9+wklEO4jp6zXG+U5DQcfVAKQ00cHHe50OcnfX1ZS0kVNovYw== +"@medusajs/medusa@1.1.41-dev-1633423310981": + version "1.1.41-dev-1633423310981" + resolved "http://localhost:4873/@medusajs%2fmedusa/-/medusa-1.1.41-dev-1633423310981.tgz#aafdac188f1e543da6faca01f71d68dd197fcba1" + integrity sha512-jQQd8qHm8ldrtMmEf8TMPSyK2nSvawxTRlwZEUG9WcsLkdDkuS6CpShmwf2+1X6SYn/bOSdAFszvvjDnHxbKOQ== dependencies: "@hapi/joi" "^16.1.8" - "@medusajs/medusa-cli" "1.1.16-dev-1631630701835" + "@medusajs/medusa-cli" "1.1.18-dev-1633423310981" "@types/lodash" "^4.14.168" awilix "^4.2.3" body-parser "^1.19.0" @@ -1283,11 +1283,12 @@ glob "^7.1.6" ioredis "^4.17.3" ioredis-mock "^5.6.0" + iso8601-duration "^1.3.0" joi "^17.3.0" joi-objectid "^3.0.1" jsonwebtoken "^8.5.1" - medusa-core-utils "1.1.20-dev-1631630701835" - medusa-test-utils "1.1.23-dev-1631630701835" + medusa-core-utils "1.1.22-dev-1633423310981" + medusa-test-utils "1.1.25-dev-1633423310981" morgan "^1.9.1" multer "^1.4.2" passport "^0.4.0" @@ -1932,10 +1933,10 @@ babel-preset-jest@^26.6.2: babel-plugin-jest-hoist "^26.6.2" babel-preset-current-node-syntax "^1.0.0" -babel-preset-medusa-package@1.1.13-dev-1631630701835: - version "1.1.13-dev-1631630701835" - resolved "http://localhost:4873/babel-preset-medusa-package/-/babel-preset-medusa-package-1.1.13-dev-1631630701835.tgz#5b66b3738e4904e31b2db30a6ea8e68eb0f8f641" - integrity sha512-V7sXlktlvEON7FLhxe+Y3NVe8l8DQyB5oJTryG4Bhw8y1AaUFOiQ5Vat3XuoL3qRcUSVMGL4VHw0m0O78t0PuA== +babel-preset-medusa-package@1.1.15-dev-1633423310981: + version "1.1.15-dev-1633423310981" + resolved "http://localhost:4873/babel-preset-medusa-package/-/babel-preset-medusa-package-1.1.15-dev-1633423310981.tgz#3937735456a517e9004233b3dbd968b79afed495" + integrity sha512-oyijx+KjzgA7Ehszy2bEG2JbXT76qvzihsWYZOLAgz7B/7XAosknmQgPuvoeGWQ/+2xhKgp1w/+UoncD3fygfA== dependencies: "@babel/plugin-proposal-class-properties" "^7.12.1" "@babel/plugin-proposal-decorators" "^7.12.1" @@ -4274,6 +4275,11 @@ isexe@^2.0.0: resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= +iso8601-duration@^1.3.0: + version "1.3.0" + resolved "http://localhost:4873/iso8601-duration/-/iso8601-duration-1.3.0.tgz#29d7b69e0574e4acdee50c5e5e09adab4137ba5a" + integrity sha512-K4CiUBzo3YeWk76FuET/dQPH03WE04R94feo5TSKQCXpoXQt9E4yx2CnY737QZnSAI3PI4WlKo/zfqizGx52QQ== + isobject@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" @@ -5104,25 +5110,25 @@ media-typer@0.3.0: resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= -medusa-core-utils@1.1.20-dev-1631630701835: - version "1.1.20-dev-1631630701835" - resolved "http://localhost:4873/medusa-core-utils/-/medusa-core-utils-1.1.20-dev-1631630701835.tgz#1fa7ccd2551b7891127d4f07f708029c585f4ea8" - integrity sha512-KKBo6W1QI47Ig3KMV4UXQnQN5JilMfjR6Cx7hDNj4frJoNiWa/YKDYqUr6SmY2+iJtKetnLkrKaPsDyyhZrxcw== +medusa-core-utils@1.1.22-dev-1633423310981: + version "1.1.22-dev-1633423310981" + resolved "http://localhost:4873/medusa-core-utils/-/medusa-core-utils-1.1.22-dev-1633423310981.tgz#51f252f7b7ad042a48e67b4a5a3236acfd18f404" + integrity sha512-6OVvWwqDwbd13myR66paOKHmB77PChwWCz6WCXUABnQTX4Oo1N4Nf2tTvw4gKvv3/f9G0GBRMaAfo32Z1Gk6EA== dependencies: joi "^17.3.0" joi-objectid "^3.0.1" -medusa-interfaces@1.1.21-dev-1631630701835: - version "1.1.21-dev-1631630701835" - resolved "http://localhost:4873/medusa-interfaces/-/medusa-interfaces-1.1.21-dev-1631630701835.tgz#af29b2ef0c987bded1b2d295ac6cf39880af551e" - integrity sha512-rTASRjOdcS3J9fP95p9vJzCpatMpUhTum5ddfAA0s42pZx2gsPlf1f+rUSNz5QfeC5RdIEzRfOmAGfvMpAbYGw== +medusa-interfaces@1.1.23-dev-1633423310981: + version "1.1.23-dev-1633423310981" + resolved "http://localhost:4873/medusa-interfaces/-/medusa-interfaces-1.1.23-dev-1633423310981.tgz#2819e308c716ee53d1840b6a5d5430fbf8dca3c9" + integrity sha512-Gp3fcV8SsL9ZkLe9L+ZVy6sGsv5n6Wj67wwOX0GanSqU1uLBsz3wedMfii5dGNqwDexWgYzgxOYK7QGBGYXLQg== dependencies: - medusa-core-utils "1.1.20-dev-1631630701835" + medusa-core-utils "1.1.22-dev-1633423310981" -medusa-telemetry@0.0.3-dev-1631630701835: - version "0.0.3-dev-1631630701835" - resolved "http://localhost:4873/medusa-telemetry/-/medusa-telemetry-0.0.3-dev-1631630701835.tgz#d56c01d261fa30ccedc6d9976971b9744b9d8c0f" - integrity sha512-FS1L1DOIOSdRZgeIQWaM5nhFG5NtbnC/Pntfac51vQxLkzFuHy7ZEtg11CXKE+x6NWlqT1rqqgxq0EabFzEZzw== +medusa-telemetry@0.0.5-dev-1633423310981: + version "0.0.5-dev-1633423310981" + resolved "http://localhost:4873/medusa-telemetry/-/medusa-telemetry-0.0.5-dev-1633423310981.tgz#7956c08480850d6b61052c3e8b62729c24ceb338" + integrity sha512-JqruAUz4vDBE+e9jKOklLL1p9Od2fbWOR/fJjDG9drjppv4bHJlfBMUO8BjagZQi6J8Q03MmhWpFnQP7Mkop2A== dependencies: axios "^0.21.1" axios-retry "^3.1.9" @@ -5134,13 +5140,13 @@ medusa-telemetry@0.0.3-dev-1631630701835: remove-trailing-slash "^0.1.1" uuid "^8.3.2" -medusa-test-utils@1.1.23-dev-1631630701835: - version "1.1.23-dev-1631630701835" - resolved "http://localhost:4873/medusa-test-utils/-/medusa-test-utils-1.1.23-dev-1631630701835.tgz#8995d636caf2dea9ebb184f1e15b0c364c4d1b93" - integrity sha512-A8xRL+sZS22qXZSHpVfdV8f/egZxXs4iExRO2xUkTP6I/OgMhFBSg6nEd/DXVdVfpsHZCDEv8PA3ewaeAkoYhQ== +medusa-test-utils@1.1.25-dev-1633423310981: + version "1.1.25-dev-1633423310981" + resolved "http://localhost:4873/medusa-test-utils/-/medusa-test-utils-1.1.25-dev-1633423310981.tgz#8e50633de3f237d6c5ae1c7354b6fa30953504fc" + integrity sha512-cbapvTtzz5Q91JKYBiOGsJ9Uwr01DIvhf/kze3dEMAlbLLrB11kKhrFiouvjyLCG64JrGiqdCyzRWcAa9TutPg== dependencies: "@babel/plugin-transform-classes" "^7.9.5" - medusa-core-utils "1.1.20-dev-1631630701835" + medusa-core-utils "1.1.22-dev-1633423310981" randomatic "^3.1.1" merge-descriptors@1.0.1: diff --git a/packages/medusa/src/services/cart.js b/packages/medusa/src/services/cart.js index e0755d0b2c..08dbe9b2f0 100644 --- a/packages/medusa/src/services/cart.js +++ b/packages/medusa/src/services/cart.js @@ -160,7 +160,7 @@ class CartService extends BaseService { "total", ] - const totalsToSelect = select.filter(v => totalFields.includes(v)) + const totalsToSelect = select.filter((v) => totalFields.includes(v)) if (totalsToSelect.length > 0) { const relationSet = new Set(relations) relationSet.add("items") @@ -173,7 +173,7 @@ class CartService extends BaseService { relationSet.add("region") relations = [...relationSet] - select = select.filter(v => !totalFields.includes(v)) + select = select.filter((v) => !totalFields.includes(v)) } return { @@ -236,9 +236,8 @@ class CartService extends BaseService { const cartRepo = this.manager_.getCustomRepository(this.cartRepository_) const validatedId = this.validateId_(cartId) - const { select, relations, totalsToSelect } = this.transformQueryForTotals_( - options - ) + const { select, relations, totalsToSelect } = + this.transformQueryForTotals_(options) const query = { where: { id: validatedId }, @@ -273,7 +272,7 @@ class CartService extends BaseService { * @return {Promise} the result of the create operation */ async create(data) { - return this.atomicPhase_(async manager => { + return this.atomicPhase_(async (manager) => { const cartRepo = manager.getCustomRepository(this.cartRepository_) const addressRepo = manager.getCustomRepository(this.addressRepository_) const { region_id } = data @@ -342,7 +341,7 @@ class CartService extends BaseService { * @retur {Promise} the result of the update operation */ async removeLineItem(cartId, lineItemId) { - return this.atomicPhase_(async manager => { + return this.atomicPhase_(async (manager) => { const cart = await this.retrieve(cartId, { relations: [ "items", @@ -352,7 +351,7 @@ class CartService extends BaseService { ], }) - const lineItem = cart.items.find(li => li.id === lineItemId) + const lineItem = cart.items.find((li) => li.id === lineItemId) if (!lineItem) { return cart } @@ -421,7 +420,7 @@ class CartService extends BaseService { * @return {Promise} the result of the update operation */ async addLineItem(cartId, lineItem) { - return this.atomicPhase_(async manager => { + return this.atomicPhase_(async (manager) => { const cart = await this.retrieve(cartId, { relations: [ "shipping_methods", @@ -434,7 +433,7 @@ class CartService extends BaseService { let currentItem if (lineItem.should_merge) { - currentItem = cart.items.find(line => { + currentItem = cart.items.find((line) => { if (line.should_merge && line.variant_id === lineItem.variant_id) { return _.isEqual(line.metadata, lineItem.metadata) } @@ -500,13 +499,13 @@ class CartService extends BaseService { * @return {Promise} the result of the update operation */ async updateLineItem(cartId, lineItemId, lineItemUpdate) { - return this.atomicPhase_(async manager => { + return this.atomicPhase_(async (manager) => { const cart = await this.retrieve(cartId, { relations: ["items", "payment_sessions"], }) // Ensure that the line item exists in the cart - const lineItemExists = cart.items.find(i => i.id === lineItemId) + const lineItemExists = cart.items.find((i) => i.id === lineItemId) if (!lineItemExists) { throw new MedusaError( MedusaError.Types.INVALID_DATA, @@ -553,7 +552,7 @@ class CartService extends BaseService { // if any free shipping discounts, we ensure to update shipping method amount if (shouldAdd) { await Promise.all( - cart.shipping_methods.map(async sm => { + cart.shipping_methods.map(async (sm) => { const smRepo = this.manager_.getCustomRepository( this.shippingMethodRepository_ ) @@ -568,7 +567,7 @@ class CartService extends BaseService { ) } else { await Promise.all( - cart.shipping_methods.map(async sm => { + cart.shipping_methods.map(async (sm) => { const smRepo = this.manager_.getCustomRepository( this.shippingMethodRepository_ ) @@ -584,7 +583,7 @@ class CartService extends BaseService { } async update(cartId, update) { - return this.atomicPhase_(async manager => { + return this.atomicPhase_(async (manager) => { const cartRepo = manager.getCustomRepository(this.cartRepository_) const cart = await this.retrieve(cartId, { select: [ @@ -730,9 +729,7 @@ class CartService extends BaseService { * @return {Promise} the resultign customer object */ async createOrFetchUserFromEmail_(email) { - const schema = Validator.string() - .email() - .required() + const schema = Validator.string().email().required() const { value, error } = schema.validate(email.toLowerCase()) if (error) { throw new MedusaError( @@ -803,9 +800,10 @@ class CartService extends BaseService { }) } - addressOrId.country_code = addressOrId.country_code.toLowerCase() + addressOrId.country_code = addressOrId.country_code?.toLowerCase() if ( + addressOrId.country_code && !cart.region.countries.find( ({ iso_2 }) => addressOrId.country_code === iso_2 ) @@ -938,7 +936,7 @@ class CartService extends BaseService { const toParse = [...cart.discounts, discount] let sawNotShipping = false - const newDiscounts = toParse.map(d => { + const newDiscounts = toParse.map((d) => { const drule = d.rule switch (drule.type) { case "free_shipping": @@ -968,7 +966,7 @@ class CartService extends BaseService { * @return {Promise} the resulting cart */ async removeDiscount(cartId, discountCode) { - return this.atomicPhase_(async manager => { + return this.atomicPhase_(async (manager) => { const cart = await this.retrieve(cartId, { relations: ["discounts", "payment_sessions", "shipping_methods"], }) @@ -977,7 +975,7 @@ class CartService extends BaseService { await this.adjustFreeShipping_(cart, false) } - cart.discounts = cart.discounts.filter(d => d.code !== discountCode) + cart.discounts = cart.discounts.filter((d) => d.code !== discountCode) const cartRepo = manager.getCustomRepository(this.cartRepository_) @@ -1008,7 +1006,7 @@ class CartService extends BaseService { * Updates the currently selected payment session. */ async updatePaymentSession(cartId, update) { - return this.atomicPhase_(async manager => { + return this.atomicPhase_(async (manager) => { const cart = await this.retrieve(cartId, { relations: ["payment_sessions"], }) @@ -1042,7 +1040,7 @@ class CartService extends BaseService { * @return {Promise} the resulting cart */ async authorizePayment(cartId, context = {}) { - return this.atomicPhase_(async manager => { + return this.atomicPhase_(async (manager) => { const cartRepository = manager.getCustomRepository(this.cartRepository_) const cart = await this.retrieve(cartId, { @@ -1089,7 +1087,7 @@ class CartService extends BaseService { * @returns {Promise} result of update operation */ async setPaymentSession(cartId, providerId) { - return this.atomicPhase_(async manager => { + return this.atomicPhase_(async (manager) => { const psRepo = manager.getCustomRepository(this.paymentSessionRepository_) const cart = await this.retrieve(cartId, { @@ -1118,13 +1116,13 @@ class CartService extends BaseService { } await Promise.all( - cart.payment_sessions.map(ps => { + cart.payment_sessions.map((ps) => { return psRepo.save({ ...ps, is_selected: null }) }) ) const sess = cart.payment_sessions.find( - ps => ps.provider_id === providerId + (ps) => ps.provider_id === providerId ) sess.is_selected = true @@ -1150,7 +1148,7 @@ class CartService extends BaseService { * @returns {Promise} the result of the update operation. */ async setPaymentSessions(cartOrCartId) { - return this.atomicPhase_(async manager => { + return this.atomicPhase_(async (manager) => { const psRepo = manager.getCustomRepository(this.paymentSessionRepository_) let cartId = @@ -1233,7 +1231,7 @@ class CartService extends BaseService { * @returns {Promise} the resulting cart. */ async deletePaymentSession(cartId, providerId) { - return this.atomicPhase_(async manager => { + return this.atomicPhase_(async (manager) => { const cart = await this.retrieve(cartId, { relations: ["payment_sessions"], }) @@ -1274,7 +1272,7 @@ class CartService extends BaseService { * @returns {Promise} the resulting cart. */ async refreshPaymentSession(cartId, providerId) { - return this.atomicPhase_(async manager => { + return this.atomicPhase_(async (manager) => { const cart = await this.retrieve(cartId, { relations: ["payment_sessions"], }) @@ -1313,7 +1311,7 @@ class CartService extends BaseService { * @return {Promise} the result of the update operation */ async addShippingMethod(cartId, optionId, data) { - return this.atomicPhase_(async manager => { + return this.atomicPhase_(async (manager) => { const cart = await this.retrieve(cartId, { select: ["subtotal"], relations: [ @@ -1397,7 +1395,7 @@ class CartService extends BaseService { if (cart.items.length) { cart.items = await Promise.all( cart.items - .map(async item => { + .map(async (item) => { const availablePrice = await this.productVariantService_ .getRegionPrice(item.variant_id, regionId) .catch(() => undefined) @@ -1476,20 +1474,20 @@ class CartService extends BaseService { } if (cart.discounts && cart.discounts.length) { - const newDiscounts = cart.discounts.map(d => { + const newDiscounts = cart.discounts.map((d) => { if (d.regions.find(({ id }) => id === regionId)) { return d } }) - cart.discounts = newDiscounts.filter(d => !!d) + cart.discounts = newDiscounts.filter((d) => !!d) } cart.gift_cards = [] if (cart.payment_sessions && cart.payment_sessions.length) { await Promise.all( - cart.payment_sessions.map(ps => + cart.payment_sessions.map((ps) => this.paymentProviderService_ .withTransaction(this.manager_) .deleteSession(ps) @@ -1507,7 +1505,7 @@ class CartService extends BaseService { * not found. */ async delete(cartId) { - return this.atomicPhase_(async manager => { + return this.atomicPhase_(async (manager) => { const cart = await this.retrieve(cartId, { relations: ["items", "discounts", "payment_sessions"], }) @@ -1541,7 +1539,7 @@ class CartService extends BaseService { * @return {Promise} resolves to the updated result. */ async setMetadata(cartId, key, value) { - return this.atomicPhase_(async manager => { + return this.atomicPhase_(async (manager) => { const cartRepo = manager.getCustomRepository(this.cartRepository_) const validatedId = this.validateId_(cartId) @@ -1575,7 +1573,7 @@ class CartService extends BaseService { * @return {Promise} resolves to the updated result. */ async deleteMetadata(cartId, key) { - return this.atomicPhase_(async manager => { + return this.atomicPhase_(async (manager) => { const cartRepo = manager.getCustomRepository(this.cartRepository_) const validatedId = this.validateId_(cartId) From b8d515cb0bba970b20423baa7b9fccf5f772859c Mon Sep 17 00:00:00 2001 From: Sebastian Rindom Date: Wed, 6 Oct 2021 15:21:16 +0200 Subject: [PATCH 4/5] wip --- integration-tests/api/package.json | 6 +-- integration-tests/api/yarn.lock | 70 +++++++++++++++--------------- 2 files changed, 38 insertions(+), 38 deletions(-) diff --git a/integration-tests/api/package.json b/integration-tests/api/package.json index 43d74c3d43..293e31c389 100644 --- a/integration-tests/api/package.json +++ b/integration-tests/api/package.json @@ -8,15 +8,15 @@ "build": "babel src -d dist --extensions \".ts,.js\"" }, "dependencies": { - "@medusajs/medusa": "1.1.41-dev-1633423310981", - "medusa-interfaces": "1.1.23-dev-1633423310981", + "@medusajs/medusa": "1.1.41-dev-1633515936024", + "medusa-interfaces": "1.1.23-dev-1633515936024", "typeorm": "^0.2.31" }, "devDependencies": { "@babel/cli": "^7.12.10", "@babel/core": "^7.12.10", "@babel/node": "^7.12.10", - "babel-preset-medusa-package": "1.1.15-dev-1633423310981", + "babel-preset-medusa-package": "1.1.15-dev-1633515936024", "jest": "^26.6.3" } } diff --git a/integration-tests/api/yarn.lock b/integration-tests/api/yarn.lock index c0f6dd571e..90812fbef9 100644 --- a/integration-tests/api/yarn.lock +++ b/integration-tests/api/yarn.lock @@ -1223,10 +1223,10 @@ "@types/yargs" "^15.0.0" chalk "^4.0.0" -"@medusajs/medusa-cli@1.1.18-dev-1633423310981": - version "1.1.18-dev-1633423310981" - resolved "http://localhost:4873/@medusajs%2fmedusa-cli/-/medusa-cli-1.1.18-dev-1633423310981.tgz#70355ecb8382e62f44af1b0755bfe7a999e4c16c" - integrity sha512-LGMPQrjP4ghpbzpdRInLeTGATBr3nEvuKP98/0zODoZtgHodbxgUjWFYiiy2zoBGp21GcQ3KZx60kKS9z1zSzw== +"@medusajs/medusa-cli@1.1.18-dev-1633515936024": + version "1.1.18-dev-1633515936024" + resolved "http://localhost:4873/@medusajs%2fmedusa-cli/-/medusa-cli-1.1.18-dev-1633515936024.tgz#0a1a69116846452892c43ca24f2ea5f7c1c20d6d" + integrity sha512-zLrru0zVGGI3eDenPGNq9v79Y7Y9lJ1w81XMoss59ltAcYAitxxU3BlY30/6p4lulbndq+SlLW1HiiJLZzlOvw== dependencies: "@babel/polyfill" "^7.8.7" "@babel/runtime" "^7.9.6" @@ -1244,8 +1244,8 @@ is-valid-path "^0.1.1" joi-objectid "^3.0.1" meant "^1.0.1" - medusa-core-utils "1.1.22-dev-1633423310981" - medusa-telemetry "0.0.5-dev-1633423310981" + medusa-core-utils "1.1.22-dev-1633515936024" + medusa-telemetry "0.0.5-dev-1633515936024" netrc-parser "^3.1.6" open "^8.0.6" ora "^5.4.1" @@ -1259,13 +1259,13 @@ winston "^3.3.3" yargs "^15.3.1" -"@medusajs/medusa@1.1.41-dev-1633423310981": - version "1.1.41-dev-1633423310981" - resolved "http://localhost:4873/@medusajs%2fmedusa/-/medusa-1.1.41-dev-1633423310981.tgz#aafdac188f1e543da6faca01f71d68dd197fcba1" - integrity sha512-jQQd8qHm8ldrtMmEf8TMPSyK2nSvawxTRlwZEUG9WcsLkdDkuS6CpShmwf2+1X6SYn/bOSdAFszvvjDnHxbKOQ== +"@medusajs/medusa@1.1.41-dev-1633515936024": + version "1.1.41-dev-1633515936024" + resolved "http://localhost:4873/@medusajs%2fmedusa/-/medusa-1.1.41-dev-1633515936024.tgz#48f36aba51286da41a01959630d34dba24b22813" + integrity sha512-+doUIn/8lCNfuWhO717HLUCHpO+5c0f558ROvm0FFiqsQ7wXE+ECuuk/k/G67HLioQXNnlZH6O/UAX4HcTYc3w== dependencies: "@hapi/joi" "^16.1.8" - "@medusajs/medusa-cli" "1.1.18-dev-1633423310981" + "@medusajs/medusa-cli" "1.1.18-dev-1633515936024" "@types/lodash" "^4.14.168" awilix "^4.2.3" body-parser "^1.19.0" @@ -1287,8 +1287,8 @@ joi "^17.3.0" joi-objectid "^3.0.1" jsonwebtoken "^8.5.1" - medusa-core-utils "1.1.22-dev-1633423310981" - medusa-test-utils "1.1.25-dev-1633423310981" + medusa-core-utils "1.1.22-dev-1633515936024" + medusa-test-utils "1.1.25-dev-1633515936024" morgan "^1.9.1" multer "^1.4.2" passport "^0.4.0" @@ -1933,10 +1933,10 @@ babel-preset-jest@^26.6.2: babel-plugin-jest-hoist "^26.6.2" babel-preset-current-node-syntax "^1.0.0" -babel-preset-medusa-package@1.1.15-dev-1633423310981: - version "1.1.15-dev-1633423310981" - resolved "http://localhost:4873/babel-preset-medusa-package/-/babel-preset-medusa-package-1.1.15-dev-1633423310981.tgz#3937735456a517e9004233b3dbd968b79afed495" - integrity sha512-oyijx+KjzgA7Ehszy2bEG2JbXT76qvzihsWYZOLAgz7B/7XAosknmQgPuvoeGWQ/+2xhKgp1w/+UoncD3fygfA== +babel-preset-medusa-package@1.1.15-dev-1633515936024: + version "1.1.15-dev-1633515936024" + resolved "http://localhost:4873/babel-preset-medusa-package/-/babel-preset-medusa-package-1.1.15-dev-1633515936024.tgz#33e2094ecb965971903600f42a492d4212342a6d" + integrity sha512-q7uRhF15s6N6MUmeH9qW17BJM8p8OQXXmTk3fbQZED20Ds87RKQhQYQ0UHnhFrQuiaXPHbsdQUfXlh98RjZVRw== dependencies: "@babel/plugin-proposal-class-properties" "^7.12.1" "@babel/plugin-proposal-decorators" "^7.12.1" @@ -5110,25 +5110,25 @@ media-typer@0.3.0: resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= -medusa-core-utils@1.1.22-dev-1633423310981: - version "1.1.22-dev-1633423310981" - resolved "http://localhost:4873/medusa-core-utils/-/medusa-core-utils-1.1.22-dev-1633423310981.tgz#51f252f7b7ad042a48e67b4a5a3236acfd18f404" - integrity sha512-6OVvWwqDwbd13myR66paOKHmB77PChwWCz6WCXUABnQTX4Oo1N4Nf2tTvw4gKvv3/f9G0GBRMaAfo32Z1Gk6EA== +medusa-core-utils@1.1.22-dev-1633515936024: + version "1.1.22-dev-1633515936024" + resolved "http://localhost:4873/medusa-core-utils/-/medusa-core-utils-1.1.22-dev-1633515936024.tgz#67fc1b00b2cb82ea6a8accad67364e2f9c35fd89" + integrity sha512-1xRDCvOH+y3O/J6Gsfox6ZHiYNjvzWg4zDx5k0nr/siOIGKnEXfS4lVNWVbpFvmxze1McrTic4cypkWlI/foWg== dependencies: joi "^17.3.0" joi-objectid "^3.0.1" -medusa-interfaces@1.1.23-dev-1633423310981: - version "1.1.23-dev-1633423310981" - resolved "http://localhost:4873/medusa-interfaces/-/medusa-interfaces-1.1.23-dev-1633423310981.tgz#2819e308c716ee53d1840b6a5d5430fbf8dca3c9" - integrity sha512-Gp3fcV8SsL9ZkLe9L+ZVy6sGsv5n6Wj67wwOX0GanSqU1uLBsz3wedMfii5dGNqwDexWgYzgxOYK7QGBGYXLQg== +medusa-interfaces@1.1.23-dev-1633515936024: + version "1.1.23-dev-1633515936024" + resolved "http://localhost:4873/medusa-interfaces/-/medusa-interfaces-1.1.23-dev-1633515936024.tgz#3aaab083e70806706c150bf69ebea54ae02af0b7" + integrity sha512-aQQWia1/mT50jrAJIZV3k92QFtJwxQJvqCzjm4YVdbOUmD0mbkXB/ONoXH63mMSIqhgOSpN5GjFUSudke5zQ8Q== dependencies: - medusa-core-utils "1.1.22-dev-1633423310981" + medusa-core-utils "1.1.22-dev-1633515936024" -medusa-telemetry@0.0.5-dev-1633423310981: - version "0.0.5-dev-1633423310981" - resolved "http://localhost:4873/medusa-telemetry/-/medusa-telemetry-0.0.5-dev-1633423310981.tgz#7956c08480850d6b61052c3e8b62729c24ceb338" - integrity sha512-JqruAUz4vDBE+e9jKOklLL1p9Od2fbWOR/fJjDG9drjppv4bHJlfBMUO8BjagZQi6J8Q03MmhWpFnQP7Mkop2A== +medusa-telemetry@0.0.5-dev-1633515936024: + version "0.0.5-dev-1633515936024" + resolved "http://localhost:4873/medusa-telemetry/-/medusa-telemetry-0.0.5-dev-1633515936024.tgz#a4f9f475b4b6d96186f10764a993294d84b39bff" + integrity sha512-MmR3xn7RyaIXirjUOcxyK5idpcoQp5YC8Ly16CvKh9GCkDcEXmUL9za3ukXc/qQQlybRAU9YNwt2JhbDFKHSiw== dependencies: axios "^0.21.1" axios-retry "^3.1.9" @@ -5140,13 +5140,13 @@ medusa-telemetry@0.0.5-dev-1633423310981: remove-trailing-slash "^0.1.1" uuid "^8.3.2" -medusa-test-utils@1.1.25-dev-1633423310981: - version "1.1.25-dev-1633423310981" - resolved "http://localhost:4873/medusa-test-utils/-/medusa-test-utils-1.1.25-dev-1633423310981.tgz#8e50633de3f237d6c5ae1c7354b6fa30953504fc" - integrity sha512-cbapvTtzz5Q91JKYBiOGsJ9Uwr01DIvhf/kze3dEMAlbLLrB11kKhrFiouvjyLCG64JrGiqdCyzRWcAa9TutPg== +medusa-test-utils@1.1.25-dev-1633515936024: + version "1.1.25-dev-1633515936024" + resolved "http://localhost:4873/medusa-test-utils/-/medusa-test-utils-1.1.25-dev-1633515936024.tgz#5e14138b743b33bad4fdc188c68ce1933240663a" + integrity sha512-a8p3pcJBXeou8mZCuLF7Zxj9AEucc+2t7kQl/vTkgJZUGrMgUmtXsK8nCFLTfueIb+YJy7oCqbL8DIfkRWT6WQ== dependencies: "@babel/plugin-transform-classes" "^7.9.5" - medusa-core-utils "1.1.22-dev-1633423310981" + medusa-core-utils "1.1.22-dev-1633515936024" randomatic "^3.1.1" merge-descriptors@1.0.1: From 5441d47f88d759742e3d3d29b29bc38feceac583 Mon Sep 17 00:00:00 2001 From: Sebastian Rindom Date: Tue, 19 Oct 2021 19:16:47 +0200 Subject: [PATCH 5/5] fix: cleanup --- integration-tests/api/__tests__/store/cart.js | 4 +- integration-tests/api/package.json | 6 +- integration-tests/api/yarn.lock | 70 +++++++++---------- packages/medusa-plugin-meilisearch/yarn.lock | 60 ++++++++++++++++ packages/medusa/src/models/cart.ts | 26 ++++--- packages/medusa/src/services/cart.js | 8 +-- 6 files changed, 120 insertions(+), 54 deletions(-) diff --git a/integration-tests/api/__tests__/store/cart.js b/integration-tests/api/__tests__/store/cart.js index b394f7c8c8..560654bc51 100644 --- a/integration-tests/api/__tests__/store/cart.js +++ b/integration-tests/api/__tests__/store/cart.js @@ -30,7 +30,7 @@ describe("/store/carts", () => { const cwd = path.resolve(path.join(__dirname, "..", "..")) try { dbConnection = await initDb({ cwd }) - medusaProcess = await setupServer({ cwd, verbose: true }) + medusaProcess = await setupServer({ cwd }) } catch (error) { console.log(error) } @@ -745,7 +745,7 @@ describe("/store/carts", () => { }) }) - describe.only("shipping address + region updates", () => { + describe("shipping address + region updates", () => { beforeEach(async () => { try { await cartSeeder(dbConnection) diff --git a/integration-tests/api/package.json b/integration-tests/api/package.json index 9608373adc..bde4983347 100644 --- a/integration-tests/api/package.json +++ b/integration-tests/api/package.json @@ -8,15 +8,15 @@ "build": "babel src -d dist --extensions \".ts,.js\"" }, "dependencies": { - "@medusajs/medusa": "1.1.45-dev-1634658131183", - "medusa-interfaces": "1.1.27-dev-1634658131183", + "@medusajs/medusa": "1.1.41-dev-1634316075104", + "medusa-interfaces": "1.1.23-dev-1634316075104", "typeorm": "^0.2.31" }, "devDependencies": { "@babel/cli": "^7.12.10", "@babel/core": "^7.12.10", "@babel/node": "^7.12.10", - "babel-preset-medusa-package": "1.1.17-dev-1634658131183", + "babel-preset-medusa-package": "1.1.15-dev-1634316075104", "jest": "^26.6.3" } } diff --git a/integration-tests/api/yarn.lock b/integration-tests/api/yarn.lock index 09428c420b..5bfce87d1e 100644 --- a/integration-tests/api/yarn.lock +++ b/integration-tests/api/yarn.lock @@ -1223,10 +1223,10 @@ "@types/yargs" "^15.0.0" chalk "^4.0.0" -"@medusajs/medusa-cli@1.1.22-dev-1634658131183": - version "1.1.22-dev-1634658131183" - resolved "http://localhost:4873/@medusajs%2fmedusa-cli/-/medusa-cli-1.1.22-dev-1634658131183.tgz#9aad9860afadabf2a361ac696282399856b4aca0" - integrity sha512-KPzHuAUk21hUK1/0Kjs9HFRywQWI48MzD7YA+aTVWwHGjrrq+/V3bgTCA1VtZDE5rHv/7aMiEGXdrtwe984Rsw== +"@medusajs/medusa-cli@1.1.18-dev-1634316075104": + version "1.1.18-dev-1634316075104" + resolved "http://localhost:4873/@medusajs%2fmedusa-cli/-/medusa-cli-1.1.18-dev-1634316075104.tgz#65b891999ae2c3125d6ea8d83e0f28907fed9dfc" + integrity sha512-wfcfCdJn28C69j2r6EBc6YYVd/wwJ605SI9PI7tgE+0PJRo1NxUcV3+5py9YSAj1Yvjj70vy4mPvpjJfdy3P6g== dependencies: "@babel/polyfill" "^7.8.7" "@babel/runtime" "^7.9.6" @@ -1244,8 +1244,8 @@ is-valid-path "^0.1.1" joi-objectid "^3.0.1" meant "^1.0.1" - medusa-core-utils "1.1.26-dev-1634658131183" - medusa-telemetry "0.0.9-dev-1634658131183" + medusa-core-utils "1.1.22-dev-1634316075104" + medusa-telemetry "0.0.5-dev-1634316075104" netrc-parser "^3.1.6" open "^8.0.6" ora "^5.4.1" @@ -1259,13 +1259,13 @@ winston "^3.3.3" yargs "^15.3.1" -"@medusajs/medusa@1.1.45-dev-1634658131183": - version "1.1.45-dev-1634658131183" - resolved "http://localhost:4873/@medusajs%2fmedusa/-/medusa-1.1.45-dev-1634658131183.tgz#73c8c29d973ac0a947baac458ee0383c3bafa367" - integrity sha512-f4VVd1b41vOU1cgvcoja+1VQfN4MY95Ju3Cl8q6FmiKI5gRcbGIpmVRWBuQz+8YCumMbAroEVNMRDQu+i0bcfg== +"@medusajs/medusa@1.1.41-dev-1634316075104": + version "1.1.41-dev-1634316075104" + resolved "http://localhost:4873/@medusajs%2fmedusa/-/medusa-1.1.41-dev-1634316075104.tgz#8b81aa4a1234fdaf486822545cd8a91d079f7e4b" + integrity sha512-Xw5//89QYYmo+jIBntwDJmbUya/JZl8dbMYVBDcLnORlWRGpWuzLdILfIMW0XWkF8aVI829O9goqT+hsQ/cZ5w== dependencies: "@hapi/joi" "^16.1.8" - "@medusajs/medusa-cli" "1.1.22-dev-1634658131183" + "@medusajs/medusa-cli" "1.1.18-dev-1634316075104" "@types/lodash" "^4.14.168" awilix "^4.2.3" body-parser "^1.19.0" @@ -1287,8 +1287,8 @@ joi "^17.3.0" joi-objectid "^3.0.1" jsonwebtoken "^8.5.1" - medusa-core-utils "1.1.26-dev-1634658131183" - medusa-test-utils "1.1.29-dev-1634658131183" + medusa-core-utils "1.1.22-dev-1634316075104" + medusa-test-utils "1.1.25-dev-1634316075104" morgan "^1.9.1" multer "^1.4.2" passport "^0.4.0" @@ -1911,10 +1911,10 @@ babel-preset-jest@^26.6.2: babel-plugin-jest-hoist "^26.6.2" babel-preset-current-node-syntax "^1.0.0" -babel-preset-medusa-package@1.1.17-dev-1634658131183: - version "1.1.17-dev-1634658131183" - resolved "http://localhost:4873/babel-preset-medusa-package/-/babel-preset-medusa-package-1.1.17-dev-1634658131183.tgz#351936ebb42e36824f5ff54648f226728f31a5d4" - integrity sha512-jsL1PF3r5SSKUywYveXnnLwcmsrD0MzL2GapoREUmm4b6CQ5dPHCEORb3t0ClCk7KgnJd7AynOuvQGR4Zwqo1Q== +babel-preset-medusa-package@1.1.15-dev-1634316075104: + version "1.1.15-dev-1634316075104" + resolved "http://localhost:4873/babel-preset-medusa-package/-/babel-preset-medusa-package-1.1.15-dev-1634316075104.tgz#1180bb50676ff349fc59b0b9c8bcad97caef85dc" + integrity sha512-BUWSunUpuAbdZyV093TdwEc5DZvrbp3aqQlrouX9HxgqrFeXYFWNcZqZNADS9NHq1LJqNyHuE1Vz+IQnu9lj0g== dependencies: "@babel/plugin-proposal-class-properties" "^7.12.1" "@babel/plugin-proposal-decorators" "^7.12.1" @@ -5089,25 +5089,25 @@ media-typer@0.3.0: resolved "http://localhost:4873/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= -medusa-core-utils@1.1.26-dev-1634658131183: - version "1.1.26-dev-1634658131183" - resolved "http://localhost:4873/medusa-core-utils/-/medusa-core-utils-1.1.26-dev-1634658131183.tgz#c2aadc8c6cb48f21ddbb4f3519514da87f0c8d8d" - integrity sha512-IXUFAJdR9D8cKCct89CR1J45056oRSIckKnaSf0TpVncHFvaGFQuwa6DkKAprTuOJ5idvTDn+B9BPcjJ/aec6Q== +medusa-core-utils@1.1.22-dev-1634316075104: + version "1.1.22-dev-1634316075104" + resolved "http://localhost:4873/medusa-core-utils/-/medusa-core-utils-1.1.22-dev-1634316075104.tgz#9cffe185fbce1899ffaae0e08e8f0007fca8571e" + integrity sha512-WRkquPYzodg5PSWTxnIDRMcn+N8LiLpq1Yx8DWIsmV/tsULe+Sz1CMJcUFRGF5bLcyN/Za9yIz6GCHmGOB64aw== dependencies: joi "^17.3.0" joi-objectid "^3.0.1" -medusa-interfaces@1.1.27-dev-1634658131183: - version "1.1.27-dev-1634658131183" - resolved "http://localhost:4873/medusa-interfaces/-/medusa-interfaces-1.1.27-dev-1634658131183.tgz#00b83bacc2202e81b1eed30d5558df9cc9c29a59" - integrity sha512-Bh1Ir51Rw8jWAyag4eAlB8iwfHa50ZSk3l+PdwkNq2wETm/Q0kh2Jpcfh0EC0tGHpfUe4s4Mjnj7nmobcCkfWg== +medusa-interfaces@1.1.23-dev-1634316075104: + version "1.1.23-dev-1634316075104" + resolved "http://localhost:4873/medusa-interfaces/-/medusa-interfaces-1.1.23-dev-1634316075104.tgz#7d787951fd4d66b75b3b235cd833b1840506804b" + integrity sha512-+6u2Q2lgALX2RYBjLOTFmCKB2HgarQbRr+u0uG81gyurF2/TxzwGb/hJLZIeS/Elk2HYuIpstswrAet7/9Rupw== dependencies: - medusa-core-utils "1.1.26-dev-1634658131183" + medusa-core-utils "1.1.22-dev-1634316075104" -medusa-telemetry@0.0.9-dev-1634658131183: - version "0.0.9-dev-1634658131183" - resolved "http://localhost:4873/medusa-telemetry/-/medusa-telemetry-0.0.9-dev-1634658131183.tgz#d47ef4082f309ae6c8c741146ec6238f480ef235" - integrity sha512-rwysPKpJYL7NobXUb1ShZrGJhQA3P52QbbJb3F9pc9Qch+SV9RCkhjPPOwwzyM8yAP42DTXvX66gAlhPd9/BOA== +medusa-telemetry@0.0.5-dev-1634316075104: + version "0.0.5-dev-1634316075104" + resolved "http://localhost:4873/medusa-telemetry/-/medusa-telemetry-0.0.5-dev-1634316075104.tgz#c1bd94ab2e2c3d4dc4bc3d664d96a9091a924fd9" + integrity sha512-Lh/izeAaHt/ClugwMi+Gwsa2OAzVuuNW5WhFAiHQhrR0BA4bYee4xLKWqWw+JGfjMfodOCwF+Zl3I5qINXuaFg== dependencies: axios "^0.21.1" axios-retry "^3.1.9" @@ -5119,13 +5119,13 @@ medusa-telemetry@0.0.9-dev-1634658131183: remove-trailing-slash "^0.1.1" uuid "^8.3.2" -medusa-test-utils@1.1.29-dev-1634658131183: - version "1.1.29-dev-1634658131183" - resolved "http://localhost:4873/medusa-test-utils/-/medusa-test-utils-1.1.29-dev-1634658131183.tgz#3b58665eb71d2d6e65bb4ed05376e084f18140b4" - integrity sha512-gYECUfDdJKcyLGc9WeujTv1a5FUUxkStT4UFYhsgK6QYVBo7mc10XPBS4mMXBH9cnu4gSipFNmZyuVO4i2nMYQ== +medusa-test-utils@1.1.25-dev-1634316075104: + version "1.1.25-dev-1634316075104" + resolved "http://localhost:4873/medusa-test-utils/-/medusa-test-utils-1.1.25-dev-1634316075104.tgz#5958d02013a73f8ddcaf4140d9c81e900172f826" + integrity sha512-2P+Mq+kICR4oa2AhT36HhP8VR15tEli6XBT/yWweVBkRzrjoGptqHg5BtDtUt/s+PYy7STlKG/tin/VH6J3zLg== dependencies: "@babel/plugin-transform-classes" "^7.9.5" - medusa-core-utils "1.1.26-dev-1634658131183" + medusa-core-utils "1.1.22-dev-1634316075104" randomatic "^3.1.1" merge-descriptors@1.0.1: diff --git a/packages/medusa-plugin-meilisearch/yarn.lock b/packages/medusa-plugin-meilisearch/yarn.lock index 15a5be80b3..2cd22af7e9 100644 --- a/packages/medusa-plugin-meilisearch/yarn.lock +++ b/packages/medusa-plugin-meilisearch/yarn.lock @@ -953,6 +953,18 @@ exec-sh "^0.3.2" minimist "^1.2.0" +"@hapi/hoek@^9.0.0": + version "9.2.1" + resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.2.1.tgz#9551142a1980503752536b5050fd99f4a7f13b17" + integrity sha512-gfta+H8aziZsm8pZa0vj04KO6biEiisppNgA1kbJvFrrWu9Vm7eaUEy76DIxsuTaWvti5fkJVhllWc6ZTE+Mdw== + +"@hapi/topo@^5.0.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-5.1.0.tgz#dc448e332c6c6e37a4dc02fd84ba8d44b9afb012" + integrity sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg== + dependencies: + "@hapi/hoek" "^9.0.0" + "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" @@ -1154,6 +1166,23 @@ readdirp "^2.2.1" upath "^1.1.1" +"@sideway/address@^4.1.0": + version "4.1.2" + resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.2.tgz#811b84333a335739d3969cfc434736268170cad1" + integrity sha512-idTz8ibqWFrPU8kMirL0CoPH/A29XOzzAzpyN3zQ4kAWnzmNfFmRaoMNN6VI8ske5M73HZyhIaW4OuSFIdM4oA== + dependencies: + "@hapi/hoek" "^9.0.0" + +"@sideway/formula@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@sideway/formula/-/formula-3.0.0.tgz#fe158aee32e6bd5de85044be615bc08478a0a13c" + integrity sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg== + +"@sideway/pinpoint@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz#cff8ffadc372ad29fd3f78277aeb29e632cc70df" + integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== + "@sinonjs/commons@^1.7.0": version "1.8.3" resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.3.tgz#3802ddd21a50a949b6721ddd72da36e67e7f1b2d" @@ -3502,6 +3531,22 @@ jest@^25.5.2: import-local "^3.0.2" jest-cli "^25.5.4" +joi-objectid@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/joi-objectid/-/joi-objectid-3.0.1.tgz#63ace7860f8e1a993a28d40c40ffd8eff01a3668" + integrity sha512-V/3hbTlGpvJ03Me6DJbdBI08hBTasFOmipsauOsxOSnsF1blxV537WTl1zPwbfcKle4AK0Ma4OPnzMH4LlvTpQ== + +joi@^17.3.0: + version "17.4.2" + resolved "https://registry.yarnpkg.com/joi/-/joi-17.4.2.tgz#02f4eb5cf88e515e614830239379dcbbe28ce7f7" + integrity sha512-Lm56PP+n0+Z2A2rfRvsfWVDXGEWjXxatPopkQ8qQ5mxCEhwHG+Ettgg5o98FFaxilOxozoa14cFhrE/hOzh/Nw== + dependencies: + "@hapi/hoek" "^9.0.0" + "@hapi/topo" "^5.0.0" + "@sideway/address" "^4.1.0" + "@sideway/formula" "^3.0.0" + "@sideway/pinpoint" "^2.0.0" + js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -3732,6 +3777,21 @@ media-typer@0.3.0: resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= +medusa-core-utils@^1.1.20, medusa-core-utils@^1.1.23: + version "1.1.23" + resolved "https://registry.yarnpkg.com/medusa-core-utils/-/medusa-core-utils-1.1.23.tgz#1e9260d5066117350dbf56dc176dd25e488e90a1" + integrity sha512-3KnfbCGud09xYC7qrc+kw2XmBFa4UuGBOPT2IU3j70BjFhEU9ftD45oolKXNUziOZIIGRf/FIwGj+Lwgy6IAfA== + dependencies: + joi "^17.3.0" + joi-objectid "^3.0.1" + +medusa-interfaces@^1.1.23: + version "1.1.24" + resolved "https://registry.yarnpkg.com/medusa-interfaces/-/medusa-interfaces-1.1.24.tgz#13d0bc4afbd56c028c9e4bc562b0ce7a2023453c" + integrity sha512-jzdHRN6AmX2Tuh3nbZd9PQJ0z1b6TzAAfyjak2rmakfoXzv19cAcXq5iUV04kQk+659Q+A14ei1LD/IemMYDmA== + dependencies: + medusa-core-utils "^1.1.23" + meilisearch@^0.20.0: version "0.20.0" resolved "https://registry.yarnpkg.com/meilisearch/-/meilisearch-0.20.0.tgz#42899fec7a2ddefcd035e30ed5dd47aa65a6727f" diff --git a/packages/medusa/src/models/cart.ts b/packages/medusa/src/models/cart.ts index 53160a6914..5588d24c3b 100644 --- a/packages/medusa/src/models/cart.ts +++ b/packages/medusa/src/models/cart.ts @@ -151,9 +151,11 @@ export class Cart { @JoinColumn({ name: "shipping_address_id" }) shipping_address: Address - @OneToMany(() => LineItem, (lineItem) => lineItem.cart, { - cascade: ["insert", "remove"], - }) + @OneToMany( + () => LineItem, + lineItem => lineItem.cart, + { cascade: ["insert", "remove"] } + ) items: LineItem[] @Index() @@ -202,9 +204,11 @@ export class Cart { payment_session: PaymentSession - @OneToMany(() => PaymentSession, (paymentSession) => paymentSession.cart, { - cascade: true, - }) + @OneToMany( + () => PaymentSession, + paymentSession => paymentSession.cart, + { cascade: true } + ) payment_sessions: PaymentSession[] @Index() @@ -215,9 +219,11 @@ export class Cart { @JoinColumn({ name: "payment_id" }) payment: Payment - @OneToMany(() => ShippingMethod, (method) => method.cart, { - cascade: ["soft-remove", "remove"], - }) + @OneToMany( + () => ShippingMethod, + method => method.cart, + { cascade: ["soft-remove", "remove"] } + ) shipping_methods: ShippingMethod[] @DbAwareColumn({ type: "enum", enum: CartType, default: "default" }) @@ -267,7 +273,7 @@ export class Cart { @AfterLoad() private afterLoad() { if (this.payment_sessions) { - this.payment_session = this.payment_sessions.find((p) => p.is_selected) + this.payment_session = this.payment_sessions.find(p => p.is_selected) } } } diff --git a/packages/medusa/src/services/cart.js b/packages/medusa/src/services/cart.js index 9ec9b996e4..a584832c4a 100644 --- a/packages/medusa/src/services/cart.js +++ b/packages/medusa/src/services/cart.js @@ -771,8 +771,8 @@ class CartService extends BaseService { addressOrId.country_code = addressOrId.country_code.toLowerCase() if (addressOrId.id) { - cart.billing_address_id = addressOrId.id - cart.billing_address = addressOrId + const updated = await addrRepo.save(addressOrId) + cart.billing_address = updated } else { if (cart.billing_address_id) { const addr = await addrRepo.findOne({ @@ -823,8 +823,8 @@ class CartService extends BaseService { } if (addressOrId.id) { - await addrRepo.save(addressOrId) - cart.shipping_address_id = addressOrId.id + const updated = await addrRepo.save(addressOrId) + cart.shipping_address = updated } else { if (cart.shipping_address_id) { const addr = await addrRepo.findOne({