From f6bd99f3ac6a5acbad316b9b66eeccb9ff224d80 Mon Sep 17 00:00:00 2001 From: Krzysztof Polak Date: Thu, 26 Feb 2026 11:29:24 +0100 Subject: [PATCH 1/2] fix: correct backend URL variable in Slack inventory-level template and remove unnecessary console log in slack-service step --- .../http/slack-templates.workflow.spec.ts | 119 ++++++++++++++++++ src/templates/slack/inventory-level/config.ts | 2 +- .../steps/slack-service.ts | 2 - 3 files changed, 120 insertions(+), 3 deletions(-) create mode 100644 integration-tests/http/slack-templates.workflow.spec.ts diff --git a/integration-tests/http/slack-templates.workflow.spec.ts b/integration-tests/http/slack-templates.workflow.spec.ts new file mode 100644 index 0000000..8469870 --- /dev/null +++ b/integration-tests/http/slack-templates.workflow.spec.ts @@ -0,0 +1,119 @@ +import { medusaIntegrationTestRunner } from "@medusajs/test-utils" +import { slackServiceWorkflow } from "../../src/workflows/mpn-builder-services/slack-service" + +type SlackTemplateCase = { + name: string + templateId: string + data: Record +} + +const backendUrl = "http://localhost:9000" + +const cases: SlackTemplateCase[] = [ + { + name: "inventory level", + templateId: "system_inventory-level", + data: { + backendUrl, + inventory_level: { + inventory_item: { id: "ii_123" }, + stock_locations: [{ name: "Main" }], + }, + }, + }, + { + name: "product", + templateId: "system_product", + data: { + backendUrl, + product: { id: "prod_123" }, + }, + }, + { + name: "product variant", + templateId: "system_product-variant", + data: { + backendUrl, + product_variant: { + id: "variant_123", + product: { id: "prod_123" }, + }, + }, + }, + { + name: "order placed", + templateId: "system_order-placed", + data: { + backendUrl, + order: { id: "order_123" }, + }, + }, + { + name: "order completed", + templateId: "system_order-completed", + data: { + backendUrl, + order: { id: "order_123" }, + }, + }, + { + name: "order updated", + templateId: "system_order-updated", + data: { + backendUrl, + order: { id: "order_123" }, + }, + }, + { + name: "order canceled", + templateId: "system_order-canceled", + data: { + backendUrl, + order: { id: "order_123" }, + }, + }, + { + name: "order archived", + templateId: "system_order-archived", + data: { + backendUrl, + order: { id: "order_123" }, + }, + }, +] + +medusaIntegrationTestRunner({ + moduleName: "notification-emails", + medusaConfigFile: process.cwd(), + testSuite: ({ getContainer }) => { + describe("slackServiceWorkflow templates", () => { + jest.setTimeout(60 * 1000) + + test.each(cases)( + "renders $name", + async ({ templateId, data }) => { + const { result } = await slackServiceWorkflow( + getContainer() + ).run({ + input: { + template_id: templateId, + data, + options: { + locale: "en", + theme: {}, + translations: {}, + backendUrl, + }, + }, + }) + + expect(Array.isArray(result.blocks)).toBe(true) + expect(result.blocks.length).toBeGreaterThan(0) + result.blocks.forEach((block: any) => { + expect(block.type).toBeTruthy() + }) + } + ) + }) + }, +}) diff --git a/src/templates/slack/inventory-level/config.ts b/src/templates/slack/inventory-level/config.ts index 69fc20a..01a303b 100644 --- a/src/templates/slack/inventory-level/config.ts +++ b/src/templates/slack/inventory-level/config.ts @@ -39,7 +39,7 @@ export const templateBlocks = [ type: "plain_text", text: "Open in Panel", }, - url: `{{data.backend_url}}/app/inventory/{{data.inventory_level.inventory_item.id}}`, + url: `{{data.backendUrl}}/app/inventory/{{data.inventory_level.inventory_item.id}}`, style: "primary", }, ], diff --git a/src/workflows/mpn-builder-services/steps/slack-service.ts b/src/workflows/mpn-builder-services/steps/slack-service.ts index 3f8d8c0..4ca329e 100644 --- a/src/workflows/mpn-builder-services/steps/slack-service.ts +++ b/src/workflows/mpn-builder-services/steps/slack-service.ts @@ -83,8 +83,6 @@ export const slackServiceStep = createStep( }, }) - console.log("renderedBlocks", renderedBlocks) - return new StepResponse({ blocks: renderedBlocks, }) From 739af9ed738a023ab1b4d3463a11ef0c0dde008a Mon Sep 17 00:00:00 2001 From: Krzysztof Polak Date: Thu, 26 Feb 2026 11:37:17 +0100 Subject: [PATCH 2/2] refactor: streamline Slack service workflow tests and remove deprecated test file --- .../http/slack-service.workflow.spec.ts | 128 ++++++++++++++---- .../http/slack-templates.workflow.spec.ts | 119 ---------------- package.json | 4 +- 3 files changed, 106 insertions(+), 145 deletions(-) delete mode 100644 integration-tests/http/slack-templates.workflow.spec.ts diff --git a/integration-tests/http/slack-service.workflow.spec.ts b/integration-tests/http/slack-service.workflow.spec.ts index 4d8948f..8469870 100644 --- a/integration-tests/http/slack-service.workflow.spec.ts +++ b/integration-tests/http/slack-service.workflow.spec.ts @@ -1,39 +1,119 @@ import { medusaIntegrationTestRunner } from "@medusajs/test-utils" import { slackServiceWorkflow } from "../../src/workflows/mpn-builder-services/slack-service" +type SlackTemplateCase = { + name: string + templateId: string + data: Record +} + +const backendUrl = "http://localhost:9000" + +const cases: SlackTemplateCase[] = [ + { + name: "inventory level", + templateId: "system_inventory-level", + data: { + backendUrl, + inventory_level: { + inventory_item: { id: "ii_123" }, + stock_locations: [{ name: "Main" }], + }, + }, + }, + { + name: "product", + templateId: "system_product", + data: { + backendUrl, + product: { id: "prod_123" }, + }, + }, + { + name: "product variant", + templateId: "system_product-variant", + data: { + backendUrl, + product_variant: { + id: "variant_123", + product: { id: "prod_123" }, + }, + }, + }, + { + name: "order placed", + templateId: "system_order-placed", + data: { + backendUrl, + order: { id: "order_123" }, + }, + }, + { + name: "order completed", + templateId: "system_order-completed", + data: { + backendUrl, + order: { id: "order_123" }, + }, + }, + { + name: "order updated", + templateId: "system_order-updated", + data: { + backendUrl, + order: { id: "order_123" }, + }, + }, + { + name: "order canceled", + templateId: "system_order-canceled", + data: { + backendUrl, + order: { id: "order_123" }, + }, + }, + { + name: "order archived", + templateId: "system_order-archived", + data: { + backendUrl, + order: { id: "order_123" }, + }, + }, +] + medusaIntegrationTestRunner({ moduleName: "notification-emails", medusaConfigFile: process.cwd(), testSuite: ({ getContainer }) => { - describe("slackServiceWorkflow", () => { + describe("slackServiceWorkflow templates", () => { jest.setTimeout(60 * 1000) - it("renders a system Slack template", async () => { - const { result } = await slackServiceWorkflow( - getContainer() - ).run({ - input: { - template_id: "system_order-placed", - data: { - backendUrl: "http://localhost:9000", - order: { - id: "order_123", - name: "Test Order", - display_id: "123", + test.each(cases)( + "renders $name", + async ({ templateId, data }) => { + const { result } = await slackServiceWorkflow( + getContainer() + ).run({ + input: { + template_id: templateId, + data, + options: { + locale: "en", + theme: {}, + translations: {}, + backendUrl, }, }, - options: { - locale: "en", - theme: {}, - translations: {}, - backendUrl: "http://localhost:9000", - }, - }, - }) + }) - expect(Array.isArray(result.blocks)).toBe(true) - expect(result.blocks.length).toBeGreaterThan(0) - }) + expect(Array.isArray(result.blocks)).toBe(true) + expect(result.blocks.length).toBeGreaterThan(0) + result.blocks.forEach((block: any) => { + expect(block.type).toBeTruthy() + }) + } + ) }) }, }) diff --git a/integration-tests/http/slack-templates.workflow.spec.ts b/integration-tests/http/slack-templates.workflow.spec.ts deleted file mode 100644 index 8469870..0000000 --- a/integration-tests/http/slack-templates.workflow.spec.ts +++ /dev/null @@ -1,119 +0,0 @@ -import { medusaIntegrationTestRunner } from "@medusajs/test-utils" -import { slackServiceWorkflow } from "../../src/workflows/mpn-builder-services/slack-service" - -type SlackTemplateCase = { - name: string - templateId: string - data: Record -} - -const backendUrl = "http://localhost:9000" - -const cases: SlackTemplateCase[] = [ - { - name: "inventory level", - templateId: "system_inventory-level", - data: { - backendUrl, - inventory_level: { - inventory_item: { id: "ii_123" }, - stock_locations: [{ name: "Main" }], - }, - }, - }, - { - name: "product", - templateId: "system_product", - data: { - backendUrl, - product: { id: "prod_123" }, - }, - }, - { - name: "product variant", - templateId: "system_product-variant", - data: { - backendUrl, - product_variant: { - id: "variant_123", - product: { id: "prod_123" }, - }, - }, - }, - { - name: "order placed", - templateId: "system_order-placed", - data: { - backendUrl, - order: { id: "order_123" }, - }, - }, - { - name: "order completed", - templateId: "system_order-completed", - data: { - backendUrl, - order: { id: "order_123" }, - }, - }, - { - name: "order updated", - templateId: "system_order-updated", - data: { - backendUrl, - order: { id: "order_123" }, - }, - }, - { - name: "order canceled", - templateId: "system_order-canceled", - data: { - backendUrl, - order: { id: "order_123" }, - }, - }, - { - name: "order archived", - templateId: "system_order-archived", - data: { - backendUrl, - order: { id: "order_123" }, - }, - }, -] - -medusaIntegrationTestRunner({ - moduleName: "notification-emails", - medusaConfigFile: process.cwd(), - testSuite: ({ getContainer }) => { - describe("slackServiceWorkflow templates", () => { - jest.setTimeout(60 * 1000) - - test.each(cases)( - "renders $name", - async ({ templateId, data }) => { - const { result } = await slackServiceWorkflow( - getContainer() - ).run({ - input: { - template_id: templateId, - data, - options: { - locale: "en", - theme: {}, - translations: {}, - backendUrl, - }, - }, - }) - - expect(Array.isArray(result.blocks)).toBe(true) - expect(result.blocks.length).toBeGreaterThan(0) - result.blocks.forEach((block: any) => { - expect(block.type).toBeTruthy() - }) - } - ) - }) - }, -}) diff --git a/package.json b/package.json index c0d87c7..4e2f9ec 100755 --- a/package.json +++ b/package.json @@ -39,8 +39,8 @@ "publish-package": "dotenv npm publish --access public", "email:dev": "email dev --dir emails-previews", "test:unit": "TEST_TYPE=unit NODE_OPTIONS=--experimental-vm-modules jest --silent", - "test:integration:http": "TEST_TYPE=integration:http NODE_OPTIONS=--experimental-vm-modules jest --silent=false --runInBand --forceExit", - "test:integration:modules": "TEST_TYPE=integration:modules NODE_OPTIONS=--experimental-vm-modules jest --silent=false --runInBand --forceExit", + "test:integration:http": "TEST_TYPE=integration:http NODE_OPTIONS=--experimental-vm-modules jest --silent --runInBand --forceExit", + "test:integration:modules": "TEST_TYPE=integration:modules NODE_OPTIONS=--experimental-vm-modules jest --silent --runInBand --forceExit", "test:db:up": "docker compose -f docker-compose.test.yml up -d", "test:db:down": "docker compose -f docker-compose.test.yml down -v", "format": "prettier --write \"src/**/*.{ts,tsx}\"",