fix: improves integration tests (#332)

* fix: improves integration tests

* fix: giftcard order with total 0

* fix: remove breaking eager
This commit is contained in:
Sebastian Rindom authored and GitHub committed 2021-08-11 09:26:25 +02:00
1 parent 8edf8aacfa
commit 9a701ff229
23 files changed
+355 -672

No files matched your search

+39 -39
View File
@@ -1,10 +1,9 @@
const { dropDatabase } = require("pg-god");
const path = require("path");
const { Region, LineItem, Payment } = require("@medusajs/medusa");
const { Region, LineItem, GiftCard } = require("@medusajs/medusa");
const setupServer = require("../../../helpers/setup-server");
const { useApi } = require("../../../helpers/use-api");
const { initDb } = require("../../../helpers/use-db");
const { initDb, useDb } = require("../../../helpers/use-db");
const cartSeeder = require("../../helpers/cart-seeder");
@@ -14,40 +13,20 @@ describe("/store/carts", () => {
let medusaProcess;
let dbConnection;
const doAfterEach = async (manager) => {
await manager.query(`DELETE FROM "line_item"`);
await manager.query(`DELETE FROM "money_amount"`);
await manager.query(`DELETE FROM "discount"`);
await manager.query(`DELETE FROM "discount_rule"`);
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"`);
await manager.query(`DELETE FROM "payment_provider"`);
await manager.query(`DELETE FROM "payment_session"`);
await manager.query(`UPDATE "payment" SET order_id=NULL`);
await manager.query(`DELETE FROM "order"`);
await manager.query(`UPDATE "payment" SET cart_id=NULL`);
await manager.query(`DELETE FROM "cart"`);
await manager.query(`DELETE FROM "payment"`);
await manager.query(`DELETE FROM "address"`);
await manager.query(`DELETE FROM "customer"`);
await manager.query(
`UPDATE "country" SET region_id=NULL WHERE iso_2 = 'us'`
);
await manager.query(`DELETE FROM "region"`);
const doAfterEach = async () => {
const db = useDb();
return await db.teardown();
};
beforeAll(async () => {
const cwd = path.resolve(path.join(__dirname, "..", ".."));
dbConnection = await initDb({ cwd });
medusaProcess = await setupServer({ cwd });
medusaProcess = await setupServer({ cwd, verbose: true });
});
afterAll(async () => {
dbConnection.close();
await dropDatabase({ databaseName: "medusa-integration" });
const db = useDb();
await db.shutdown();
medusaProcess.kill();
});
@@ -66,8 +45,7 @@ describe("/store/carts", () => {
});
afterEach(async () => {
const manager = dbConnection.manager;
await doAfterEach(manager);
await doAfterEach();
});
it("creates a cart", async () => {
@@ -125,8 +103,7 @@ describe("/store/carts", () => {
});
afterEach(async () => {
const manager = dbConnection.manager;
await doAfterEach(manager);
await doAfterEach();
});
it("fails on apply discount if limit has been reached", async () => {
@@ -215,6 +192,32 @@ describe("/store/carts", () => {
expect(cart.status).toEqual(200);
});
it("complete cart with giftcard total 0", async () => {
const manager = dbConnection.manager;
await manager.insert(GiftCard, {
id: "gift_test",
code: "GC_TEST",
value: 20000,
balance: 20000,
region_id: "test-region",
});
const api = useApi();
await api.post(`/store/carts/test-cart-3`, {
gift_cards: [{ code: "GC_TEST" }],
});
const getRes = await api
.post(`/store/carts/test-cart-3/complete`)
.catch((err) => {
console.log(err.response.data);
});
expect(getRes.status).toEqual(200);
expect(getRes.data.type).toEqual("order");
});
it("complete cart with items inventory covered", async () => {
const api = useApi();
const getRes = await api.post(`/store/carts/test-cart-2/complete-cart`);
@@ -281,8 +284,7 @@ describe("/store/carts", () => {
});
afterEach(async () => {
const manager = dbConnection.manager;
await doAfterEach(manager);
await doAfterEach();
});
it("adds a shipping method to cart", async () => {
@@ -386,8 +388,7 @@ describe("/store/carts", () => {
});
afterEach(async () => {
const manager = dbConnection.manager;
await doAfterEach(manager);
await doAfterEach();
});
it("removes free shipping and updates shipping total", async () => {
@@ -424,8 +425,7 @@ describe("/store/carts", () => {
});
afterEach(async () => {
const manager = dbConnection.manager;
await doAfterEach(manager);
await doAfterEach();
});
it("updates empty cart.customer_id on cart retrieval", async () => {
@@ -1,10 +1,9 @@
const { dropDatabase } = require("pg-god");
const path = require("path");
const { Address, Customer } = require("@medusajs/medusa");
const setupServer = require("../../../helpers/setup-server");
const { useApi } = require("../../../helpers/use-api");
const { initDb } = require("../../../helpers/use-db");
const { initDb, useDb } = require("../../../helpers/use-db");
const customerSeeder = require("../../helpers/customer-seeder");
@@ -14,9 +13,9 @@ describe("/store/customers", () => {
let medusaProcess;
let dbConnection;
const doAfterEach = async (manager) => {
await manager.query(`DELETE FROM "customer"`);
await manager.query(`DELETE FROM "address"`);
const doAfterEach = async () => {
const db = useDb();
await db.teardown();
};
beforeAll(async () => {
@@ -26,9 +25,8 @@ describe("/store/customers", () => {
});
afterAll(async () => {
dbConnection.close();
await dropDatabase({ databaseName: "medusa-integration" });
const db = useDb();
await db.shutdown();
medusaProcess.kill();
});
@@ -46,8 +44,7 @@ describe("/store/customers", () => {
});
afterEach(async () => {
const manager = dbConnection.manager;
await doAfterEach(manager);
await doAfterEach();
});
it("creates a customer", async () => {
@@ -106,8 +103,7 @@ describe("/store/customers", () => {
});
afterEach(async () => {
const manager = dbConnection.manager;
await doAfterEach(manager);
await doAfterEach();
});
it("updates a customer", async () => {
@@ -1,9 +1,8 @@
const { dropDatabase } = require("pg-god");
const path = require("path");
const setupServer = require("../../../helpers/setup-server");
const { useApi } = require("../../../helpers/use-api");
const { initDb } = require("../../../helpers/use-db");
const { initDb, useDb } = require("../../../helpers/use-db");
const draftOrderSeeder = require("../../helpers/draft-order-seeder");
const { create } = require("domain");
@@ -21,8 +20,8 @@ describe("/store/carts (draft-orders)", () => {
});
afterAll(async () => {
await dbConnection.close();
await dropDatabase({ databaseName: "medusa-integration" });
const db = useDb();
await db.shutdown();
medusaProcess.kill();
});
@@ -38,36 +37,8 @@ describe("/store/carts (draft-orders)", () => {
});
afterEach(async () => {
const manager = dbConnection.manager;
await manager.query(`DELETE FROM "line_item"`);
await manager.query(`DELETE FROM "money_amount"`);
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"`);
await manager.query(`DELETE FROM "discount_rule"`);
await manager.query(`DELETE FROM "payment_provider"`);
await manager.query(`DELETE FROM "payment_session"`);
await manager.query(`UPDATE "payment" SET order_id=NULL`);
await manager.query(`UPDATE "draft_order" SET order_id=NULL`);
await manager.query(`DELETE FROM "order"`);
await manager.query(`DELETE FROM "draft_order"`);
await manager.query(`DELETE FROM "cart"`);
await manager.query(`DELETE FROM "payment"`);
await manager.query(`DELETE FROM "customer"`);
await manager.query(`DELETE FROM "address"`);
await manager.query(
`UPDATE "country" SET region_id=NULL WHERE iso_2 = 'us'`
);
await manager.query(
`UPDATE "country" SET region_id=NULL WHERE iso_2 = 'de'`
);
await manager.query(`DELETE FROM "region"`);
await manager.query(`DELETE FROM "user"`);
const db = useDb();
await db.teardown();
});
it("completes a cart for a draft order thereby creating an order for the draft order", async () => {
@@ -1,10 +1,9 @@
const { dropDatabase } = require("pg-god");
const path = require("path");
const { Region, GiftCard } = require("@medusajs/medusa");
const setupServer = require("../../../helpers/setup-server");
const { useApi } = require("../../../helpers/use-api");
const { initDb } = require("../../../helpers/use-db");
const { initDb, useDb } = require("../../../helpers/use-db");
jest.setTimeout(30000);
@@ -19,9 +18,8 @@ describe("/store/gift-cards", () => {
});
afterAll(async () => {
dbConnection.close();
await dropDatabase({ databaseName: "medusa-integration" });
const db = useDb();
await db.shutdown();
medusaProcess.kill();
});
@@ -44,9 +42,8 @@ describe("/store/gift-cards", () => {
});
afterEach(async () => {
const manager = dbConnection.manager;
await manager.query(`DELETE FROM "gift_card"`);
await manager.query(`DELETE FROM "region"`);
const db = useDb();
await db.teardown();
});
it("retrieves a gift card", async () => {
@@ -1,4 +1,3 @@
const { dropDatabase } = require("pg-god");
const path = require("path");
const {
Region,
@@ -17,7 +16,7 @@ const {
const setupServer = require("../../../helpers/setup-server");
const { useApi } = require("../../../helpers/use-api");
const { initDb } = require("../../../helpers/use-db");
const { initDb, useDb } = require("../../../helpers/use-db");
const swapSeeder = require("../../helpers/swap-seeder");
const cartSeeder = require("../../helpers/cart-seeder");
@@ -35,9 +34,8 @@ describe("/store/carts", () => {
});
afterAll(async () => {
dbConnection.close();
await dropDatabase({ databaseName: "medusa-integration" });
const db = useDb();
await db.shutdown();
medusaProcess.kill();
});
@@ -61,33 +59,8 @@ describe("/store/carts", () => {
});
afterEach(async () => {
const manager = dbConnection.manager;
await manager.query(
`UPDATE "swap" SET cart_id=NULL WHERE id = 'test-swap'`
);
await manager.query(`DELETE FROM "payment_session"`);
await manager.query(`DELETE FROM "shipping_method"`);
await manager.query(`DELETE FROM "return_item"`);
await manager.query(`DELETE FROM "line_item"`);
await manager.query(`DELETE FROM "cart"`);
await manager.query(`DELETE FROM "payment"`);
await manager.query(`DELETE FROM "return"`);
await manager.query(`DELETE FROM "swap"`);
await manager.query(`DELETE FROM "fulfillment_item"`);
await manager.query(`DELETE FROM "fulfillment"`);
await manager.query(`DELETE FROM "shipping_method"`);
await manager.query(`DELETE FROM "money_amount"`);
await manager.query(`DELETE FROM "product_variant"`);
await manager.query(`DELETE FROM "product"`);
await manager.query(`DELETE FROM "shipping_option"`);
await manager.query(`DELETE FROM "order"`);
await manager.query(`DELETE FROM "address"`);
await manager.query(`DELETE FROM "customer"`);
await manager.query(
`UPDATE "country" SET region_id=NULL WHERE iso_2 = 'us'`
);
await manager.query(`DELETE FROM "region"`);
const db = useDb();
await db.teardown();
});
it("creates a swap from a cart id", async () => {
@@ -189,18 +162,8 @@ describe("/store/carts", () => {
});
afterEach(async () => {
const manager = dbConnection.manager;
await manager.query(`DELETE FROM "line_item"`);
await manager.query(`DELETE FROM "order"`);
await manager.query(`DELETE FROM "customer"`);
await manager.query(`DELETE FROM "region"`);
await manager.query(`DELETE FROM "product_option_value"`);
await manager.query(`DELETE FROM "product_option"`);
await manager.query(`DELETE FROM "money_amount"`);
await manager.query(`DELETE FROM "product_variant"`);
await manager.query(`DELETE FROM "product"`);
const db = useDb();
await db.teardown();
});
it("looks up order", async () => {
@@ -1,11 +1,10 @@
const { dropDatabase } = require("pg-god");
const path = require("path");
const { ReturnReason } = require("@medusajs/medusa");
const setupServer = require("../../../helpers/setup-server");
const { useApi } = require("../../../helpers/use-api");
const { initDb } = require("../../../helpers/use-db");
const { initDb, useDb } = require("../../../helpers/use-db");
jest.setTimeout(30000);
@@ -20,9 +19,8 @@ describe("/store/return-reasons", () => {
});
afterAll(async () => {
await dbConnection.close();
await dropDatabase({ databaseName: "medusa-integration" });
const db = useDb();
await db.shutdown();
medusaProcess.kill();
});
@@ -45,8 +43,8 @@ describe("/store/return-reasons", () => {
});
afterEach(async () => {
const manager = dbConnection.manager;
await manager.query(`DELETE FROM "return_reason"`);
const db = useDb();
await db.teardown();
});
it("list return reasons", async () => {
@@ -1,4 +1,3 @@
const { dropDatabase } = require("pg-god");
const path = require("path");
const {
Region,
@@ -14,7 +13,7 @@ const {
const setupServer = require("../../../helpers/setup-server");
const { useApi } = require("../../../helpers/use-api");
const { initDb } = require("../../../helpers/use-db");
const { initDb, useDb } = require("../../../helpers/use-db");
jest.setTimeout(30000);
@@ -29,9 +28,8 @@ describe("/store/carts", () => {
});
afterAll(async () => {
dbConnection.close();
await dropDatabase({ databaseName: "medusa-integration" });
const db = useDb();
await db.shutdown();
medusaProcess.kill();
});
@@ -124,22 +122,8 @@ describe("/store/carts", () => {
});
afterEach(async () => {
const manager = dbConnection.manager;
await manager.query(`DELETE FROM "shipping_method"`);
await manager.query(`DELETE FROM "shipping_option"`);
await manager.query(`DELETE FROM "return_item"`);
await manager.query(`DELETE FROM "return_reason"`);
await manager.query(`DELETE FROM "return"`);
await manager.query(`DELETE FROM "line_item"`);
await manager.query(`DELETE FROM "order"`);
await manager.query(`DELETE FROM "customer"`);
await manager.query(`DELETE FROM "region"`);
await manager.query(`DELETE FROM "product_option_value"`);
await manager.query(`DELETE FROM "product_option"`);
await manager.query(`DELETE FROM "money_amount"`);
await manager.query(`DELETE FROM "product_variant"`);
await manager.query(`DELETE FROM "product"`);
const db = useDb();
await db.teardown();
});
it("creates a return", async () => {
@@ -1,10 +1,9 @@
const { dropDatabase } = require("pg-god");
const path = require("path");
const { Region, ShippingProfile, ShippingOption } = require("@medusajs/medusa");
const setupServer = require("../../../helpers/setup-server");
const { useApi } = require("../../../helpers/use-api");
const { initDb } = require("../../../helpers/use-db");
const { initDb, useDb } = require("../../../helpers/use-db");
jest.setTimeout(30000);
@@ -19,9 +18,8 @@ describe("/store/shipping-options", () => {
});
afterAll(async () => {
dbConnection.close();
await dropDatabase({ databaseName: "medusa-integration" });
const db = useDb();
await db.shutdown();
medusaProcess.kill();
});
@@ -87,9 +85,8 @@ describe("/store/shipping-options", () => {
});
afterEach(async () => {
const manager = dbConnection.manager;
await manager.query(`DELETE FROM "shipping_option"`);
await manager.query(`DELETE FROM "region"`);
const db = useDb();
await db.teardown();
});
it("retrieves all shipping options", async () => {