From a516e7bcbabb7ecaf0f7ee4238085c6fd68d90e8 Mon Sep 17 00:00:00 2001 From: Oli Juhl <59018053+olivermrbl@users.noreply.github.com> Date: Thu, 7 Mar 2024 13:51:59 +0100 Subject: [PATCH] chore: Use new test runner in admin payments API (#6611) No changes to the tests. Only replacing the test runner. Awaiting #6610 --- .../api/__tests__/admin/payment.js | 285 ++++++++---------- 1 file changed, 132 insertions(+), 153 deletions(-) diff --git a/integration-tests/api/__tests__/admin/payment.js b/integration-tests/api/__tests__/admin/payment.js index 5d88e1e6d9..2d753924c1 100644 --- a/integration-tests/api/__tests__/admin/payment.js +++ b/integration-tests/api/__tests__/admin/payment.js @@ -1,17 +1,5 @@ -const path = require("path") - -const startServerWithEnvironment = - require("../../../environment-helpers/start-server-with-environment").default -const { useApi } = require("../../../environment-helpers/use-api") -const { useDb } = require("../../../environment-helpers/use-db") -const adminSeeder = require("../../../helpers/admin-seeder") - -const { - simplePaymentCollectionFactory, -} = require("../../../factories/simple-payment-collection-factory") -const { - simpleCustomerFactory, -} = require("../../../factories/simple-customer-factory") +const { medusaIntegrationTestRunner } = require("medusa-test-utils") +const { createAdminUser } = require("../../../helpers/create-admin-user") jest.setTimeout(30000) @@ -21,154 +9,145 @@ const adminHeaders = { }, } -describe("/admin/payment", () => { - let medusaProcess - let dbConnection +let { simpleCustomerFactory, simplePaymentCollectionFactory } = {} - let payCol = null - beforeAll(async () => { - const cwd = path.resolve(path.join(__dirname, "..", "..")) - const [process, connection] = await startServerWithEnvironment({ - cwd, +medusaIntegrationTestRunner({ + env: { MEDUSA_FF_PRODUCT_CATEGORIES: true }, + testSuite: ({ dbConnection, getContainer, api }) => { + beforeAll(() => { + ;({ + simplePaymentCollectionFactory, + } = require("../../../factories/simple-payment-collection-factory")) + ;({ + simpleCustomerFactory, + } = require("../../../factories/simple-customer-factory")) }) - dbConnection = connection - medusaProcess = process - }) - afterAll(async () => { - const db = useDb() - await db.shutdown() - - medusaProcess.kill() - }) - - describe("POST /admin/payment-collections/:id", () => { beforeEach(async () => { - await adminSeeder(dbConnection) - await simpleCustomerFactory(dbConnection, { - id: "customer", - email: "test@customer.com", - }) - - payCol = await simplePaymentCollectionFactory(dbConnection, { - description: "paycol description", - amount: 10000, - }) + const container = getContainer() + await createAdminUser(dbConnection, adminHeaders, container) }) - afterEach(async () => { - const db = useDb() - return await db.teardown() - }) + describe("POST /admin/payment-collections/:id", () => { + let payCol - it("Captures an authorized payment", async () => { - const api = useApi() + beforeEach(async () => { + await simpleCustomerFactory(dbConnection, { + id: "customer", + email: "test@customer.com", + }) - // create payment session - const payColRes = await api.post( - `/store/payment-collections/${payCol.id}/sessions`, - { - provider_id: "test-pay", - } - ) - await api.post( - `/store/payment-collections/${payCol.id}/sessions/batch/authorize`, - { - session_ids: payColRes.data.payment_collection.payment_sessions.map( - ({ id }) => id - ), - } - ) - - const paymentCollections = await api.get( - `/admin/payment-collections/${payCol.id}`, - adminHeaders - ) - - expect(paymentCollections.data.payment_collection.payments).toHaveLength( - 1 - ) - - const payment = paymentCollections.data.payment_collection.payments[0] - - expect(payment.captured_at).toBe(null) - - const response = await api.post( - `/admin/payments/${payment.id}/capture`, - undefined, - adminHeaders - ) - - expect(response.data.payment).toEqual( - expect.objectContaining({ - id: payment.id, - captured_at: expect.any(String), + payCol = await simplePaymentCollectionFactory(dbConnection, { + description: "paycol description", amount: 10000, }) - ) - expect(response.status).toEqual(200) + }) + + it("Captures an authorized payment", async () => { + // create payment session + const payColRes = await api.post( + `/store/payment-collections/${payCol.id}/sessions`, + { + provider_id: "test-pay", + } + ) + await api.post( + `/store/payment-collections/${payCol.id}/sessions/batch/authorize`, + { + session_ids: payColRes.data.payment_collection.payment_sessions.map( + ({ id }) => id + ), + } + ) + + const paymentCollections = await api.get( + `/admin/payment-collections/${payCol.id}`, + adminHeaders + ) + + expect( + paymentCollections.data.payment_collection.payments + ).toHaveLength(1) + + const payment = paymentCollections.data.payment_collection.payments[0] + + expect(payment.captured_at).toBe(null) + + const response = await api.post( + `/admin/payments/${payment.id}/capture`, + undefined, + adminHeaders + ) + + expect(response.data.payment).toEqual( + expect.objectContaining({ + id: payment.id, + captured_at: expect.any(String), + amount: 10000, + }) + ) + expect(response.status).toEqual(200) + }) + + it("Refunds an captured payment", async () => { + // create payment session + const payColRes = await api.post( + `/store/payment-collections/${payCol.id}/sessions`, + { + provider_id: "test-pay", + } + ) + await api.post( + `/store/payment-collections/${payCol.id}/sessions/batch/authorize`, + { + session_ids: payColRes.data.payment_collection.payment_sessions.map( + ({ id }) => id + ), + } + ) + + const paymentCollections = await api.get( + `/admin/payment-collections/${payCol.id}`, + adminHeaders + ) + const payment = paymentCollections.data.payment_collection.payments[0] + await api.post( + `/admin/payments/${payment.id}/capture`, + undefined, + adminHeaders + ) + + // refund + const response = await api.post( + `/admin/payments/${payment.id}/refund`, + { + amount: 5000, + reason: "return", + note: "Do not like it", + }, + adminHeaders + ) + + expect(response.data.refund).toEqual( + expect.objectContaining({ + payment_id: payment.id, + reason: "return", + amount: 5000, + }) + ) + expect(response.status).toEqual(200) + + const savedPayment = await api.get( + `/admin/payments/${payment.id}`, + adminHeaders + ) + + expect(savedPayment.data.payment).toEqual( + expect.objectContaining({ + amount_refunded: 5000, + }) + ) + }) }) - - it("Refunds an captured payment", async () => { - const api = useApi() - - // create payment session - const payColRes = await api.post( - `/store/payment-collections/${payCol.id}/sessions`, - { - provider_id: "test-pay", - } - ) - await api.post( - `/store/payment-collections/${payCol.id}/sessions/batch/authorize`, - { - session_ids: payColRes.data.payment_collection.payment_sessions.map( - ({ id }) => id - ), - } - ) - - const paymentCollections = await api.get( - `/admin/payment-collections/${payCol.id}`, - adminHeaders - ) - const payment = paymentCollections.data.payment_collection.payments[0] - await api.post( - `/admin/payments/${payment.id}/capture`, - undefined, - adminHeaders - ) - - // refund - const response = await api.post( - `/admin/payments/${payment.id}/refund`, - { - amount: 5000, - reason: "return", - note: "Do not like it", - }, - adminHeaders - ) - - expect(response.data.refund).toEqual( - expect.objectContaining({ - payment_id: payment.id, - reason: "return", - amount: 5000, - }) - ) - expect(response.status).toEqual(200) - - const savedPayment = await api.get( - `/admin/payments/${payment.id}`, - adminHeaders - ) - - expect(savedPayment.data.payment).toEqual( - expect.objectContaining({ - amount_refunded: 5000, - }) - ) - }) - }) + }, })