From 10113d06576df1cfbe05ed83c6aed268145aaa06 Mon Sep 17 00:00:00 2001 From: Sebastian Rindom Date: Tue, 8 Jun 2021 17:21:42 +0200 Subject: [PATCH] test: adds integration test for shipping-option-requirements --- .../api/__tests__/admin/draft-order.js | 78 +++++++++++++++++++ .../api/__tests__/store/draft-order.js | 1 + .../api/helpers/draft-order-seeder.js | 19 +++++ 3 files changed, 98 insertions(+) diff --git a/integration-tests/api/__tests__/admin/draft-order.js b/integration-tests/api/__tests__/admin/draft-order.js index 612a8c269e..858d57833a 100644 --- a/integration-tests/api/__tests__/admin/draft-order.js +++ b/integration-tests/api/__tests__/admin/draft-order.js @@ -45,6 +45,7 @@ describe("/admin/draft-orders", () => { await manager.query(`DELETE FROM "product_variant"`); await manager.query(`DELETE FROM "product"`); await manager.query(`DELETE FROM "shipping_method"`); + await manager.query(`DELETE FROM "shipping_option_requirement"`); await manager.query(`DELETE FROM "shipping_option"`); await manager.query(`UPDATE "discount" SET rule_id=NULL`); await manager.query(`DELETE FROM "discount"`); @@ -104,6 +105,79 @@ describe("/admin/draft-orders", () => { expect(response.status).toEqual(200); }); + it("fails to create a draft order with option requirement", async () => { + const api = useApi(); + + const payload = { + email: "oli@test.dk", + shipping_address: "oli-shipping", + items: [ + { + quantity: 1, + metadata: {}, + unit_price: 1, + }, + ], + region_id: "test-region", + customer_id: "oli-test", + shipping_methods: [ + { + option_id: "test-option-req", + }, + ], + }; + + const response = await api + .post("/admin/draft-orders", payload, { + headers: { + Authorization: "Bearer test_token", + }, + }) + .catch((err) => { + return err.response; + }); + expect(response.status).toEqual(400); + }); + + it("creates a draft order with option requirement", async () => { + const api = useApi(); + + const payload = { + email: "oli@test.dk", + shipping_address: "oli-shipping", + items: [ + { + variant_id: "test-variant", + quantity: 2, + metadata: {}, + }, + { + quantity: 1, + metadata: {}, + unit_price: 10000, + }, + ], + region_id: "test-region", + customer_id: "oli-test", + shipping_methods: [ + { + option_id: "test-option-req", + }, + ], + }; + + const response = await api + .post("/admin/draft-orders", payload, { + headers: { + Authorization: "Bearer test_token", + }, + }) + .catch((err) => { + console.log(err); + }); + expect(response.status).toEqual(200); + }); + it("creates a draft order with custom item", async () => { const api = useApi(); @@ -322,6 +396,7 @@ describe("/admin/draft-orders", () => { await manager.query(`DELETE FROM "product_variant"`); await manager.query(`DELETE FROM "product"`); await manager.query(`DELETE FROM "shipping_method"`); + await manager.query(`DELETE FROM "shipping_option_requirement"`); await manager.query(`DELETE FROM "shipping_option"`); await manager.query(`UPDATE "discount" SET rule_id=NULL`); await manager.query(`DELETE FROM "discount"`); @@ -431,6 +506,7 @@ describe("/admin/draft-orders", () => { await manager.query(`DELETE FROM "product_variant"`); await manager.query(`DELETE FROM "product"`); await manager.query(`DELETE FROM "shipping_method"`); + await manager.query(`DELETE FROM "shipping_option_requirement"`); await manager.query(`DELETE FROM "shipping_option"`); await manager.query(`UPDATE "discount" SET rule_id=NULL`); await manager.query(`DELETE FROM "discount"`); @@ -496,6 +572,7 @@ describe("/admin/draft-orders", () => { await manager.query(`DELETE FROM "product_variant"`); await manager.query(`DELETE FROM "product"`); await manager.query(`DELETE FROM "shipping_method"`); + await manager.query(`DELETE FROM "shipping_option_requirement"`); await manager.query(`DELETE FROM "shipping_option"`); await manager.query(`UPDATE "discount" SET rule_id=NULL`); await manager.query(`DELETE FROM "discount"`); @@ -612,6 +689,7 @@ describe("/admin/draft-orders", () => { await manager.query(`DELETE FROM "product_variant"`); await manager.query(`DELETE FROM "product"`); await manager.query(`DELETE FROM "shipping_method"`); + await manager.query(`DELETE FROM "shipping_option_requirement"`); await manager.query(`DELETE FROM "shipping_option"`); await manager.query(`UPDATE "discount" SET rule_id=NULL`); await manager.query(`DELETE FROM "discount"`); diff --git a/integration-tests/api/__tests__/store/draft-order.js b/integration-tests/api/__tests__/store/draft-order.js index 2246f192b2..de67d017fd 100644 --- a/integration-tests/api/__tests__/store/draft-order.js +++ b/integration-tests/api/__tests__/store/draft-order.js @@ -44,6 +44,7 @@ describe("/store/carts (draft-orders)", () => { await manager.query(`DELETE FROM "product_variant"`); await manager.query(`DELETE FROM "product"`); await manager.query(`DELETE FROM "shipping_method"`); + await manager.query(`DELETE FROM "shipping_option_requirement"`); await manager.query(`DELETE FROM "shipping_option"`); await manager.query(`UPDATE "discount" SET rule_id=NULL`); await manager.query(`DELETE FROM "discount"`); diff --git a/integration-tests/api/helpers/draft-order-seeder.js b/integration-tests/api/helpers/draft-order-seeder.js index b5d694daa0..5adfc9bf30 100644 --- a/integration-tests/api/helpers/draft-order-seeder.js +++ b/integration-tests/api/helpers/draft-order-seeder.js @@ -3,6 +3,7 @@ const { Customer, MoneyAmount, ShippingOption, + ShippingOptionRequirement, Product, ProductVariant, Region, @@ -166,6 +167,24 @@ module.exports = async (connection, data = {}) => { data: {}, }); + await manager.insert(ShippingOption, { + id: "test-option-req", + name: "test-option-req", + provider_id: "test-ful", + region_id: "test-region", + profile_id: defaultProfile.id, + price_type: "flat_rate", + amount: 1000, + data: {}, + }); + + await manager.insert(ShippingOptionRequirement, { + id: "option-req", + shipping_option_id: "test-option-req", + type: "min_subtotal", + amount: 10, + }); + const c = manager.create(Cart, { id: "test-cart", customer_id: "oli-test",