feat: Add http integration tests and enable them in pipeline (#7532)
This commit is contained in:
@@ -18,8 +18,8 @@ jobs:
|
|||||||
outputs:
|
outputs:
|
||||||
module-matrix: ${{ steps.set-module-matrix.outputs.matrix }}
|
module-matrix: ${{ steps.set-module-matrix.outputs.matrix }}
|
||||||
module-chunks: ${{ steps.set-module-chunks.outputs.chunks }}
|
module-chunks: ${{ steps.set-module-chunks.outputs.chunks }}
|
||||||
api-matrix: ${{ steps.set-api-matrix.outputs.matrix }}
|
http-matrix: ${{ steps.set-http-matrix.outputs.matrix }}
|
||||||
api-chunks: ${{ steps.set-api-chunks.outputs.chunks }}
|
http-chunks: ${{ steps.set-http-chunks.outputs.chunks }}
|
||||||
unit-tests-matrix: ${{ steps.set-unit-tests-matrix.outputs.matrix }}
|
unit-tests-matrix: ${{ steps.set-unit-tests-matrix.outputs.matrix }}
|
||||||
unit-tests-chunks: ${{ steps.set-unit-tests-chunks.outputs.chunks }}
|
unit-tests-chunks: ${{ steps.set-unit-tests-chunks.outputs.chunks }}
|
||||||
steps:
|
steps:
|
||||||
@@ -58,16 +58,16 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
CHUNKS: ${{ steps.set-module-chunks.outputs.chunks }}
|
CHUNKS: ${{ steps.set-module-chunks.outputs.chunks }}
|
||||||
|
|
||||||
- id: set-api-chunks
|
- id: set-http-chunks
|
||||||
name: Set API Chunks
|
name: Set HTTP Chunks
|
||||||
working-directory: integration-tests/api
|
working-directory: integration-tests/http
|
||||||
run: echo "chunks=$(yarn run jest --listTests --json | jq -cM '[_nwise(length / 2 | ceil)]')" >> $GITHUB_OUTPUT
|
run: echo "chunks=$(yarn run jest --listTests --json | jq -cM '[_nwise(length / 2 | ceil)]')" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
- id: set-api-matrix
|
- id: set-http-matrix
|
||||||
name: Set API Matrix
|
name: Set HTTP Matrix
|
||||||
run: echo "matrix=$(echo $CHUNKS | jq -cM 'to_entries | map(.key)')" >> $GITHUB_OUTPUT
|
run: echo "matrix=$(echo $CHUNKS | jq -cM 'to_entries | map(.key)')" >> $GITHUB_OUTPUT
|
||||||
env:
|
env:
|
||||||
CHUNKS: ${{ steps.set-api-chunks.outputs.chunks }}
|
CHUNKS: ${{ steps.set-http-chunks.outputs.chunks }}
|
||||||
|
|
||||||
- id: set-unit-tests-chunks
|
- id: set-unit-tests-chunks
|
||||||
name: Set Unit Tests Chunks
|
name: Set Unit Tests Chunks
|
||||||
@@ -157,75 +157,75 @@ jobs:
|
|||||||
DB_PASSWORD: postgres
|
DB_PASSWORD: postgres
|
||||||
DB_USERNAME: postgres
|
DB_USERNAME: postgres
|
||||||
|
|
||||||
#integration-tests-api-matrix:
|
integration-tests-http-matrix:
|
||||||
# needs: setup
|
needs: setup
|
||||||
# name: Shard (${{ matrix.chunk }}) API Integration Tests
|
name: Shard (${{ matrix.chunk }}) HTTP Integration Tests
|
||||||
# runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
# strategy:
|
strategy:
|
||||||
# fail-fast: false
|
fail-fast: false
|
||||||
# matrix:
|
matrix:
|
||||||
# chunk: ${{ fromJSON(needs.setup.outputs.api-matrix) }}
|
chunk: ${{ fromJSON(needs.setup.outputs.http-matrix) }}
|
||||||
# env:
|
env:
|
||||||
# TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
|
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
|
||||||
# TURBO_TEAM: ${{ secrets.TURBO_TEAM }}
|
TURBO_TEAM: ${{ secrets.TURBO_TEAM }}
|
||||||
#
|
|
||||||
# services:
|
services:
|
||||||
# redis:
|
redis:
|
||||||
# image: redis
|
image: redis
|
||||||
# options: >-
|
options: >-
|
||||||
# --health-cmd "redis-cli ping"
|
--health-cmd "redis-cli ping"
|
||||||
# --health-interval 1s
|
--health-interval 1s
|
||||||
# --health-timeout 10s
|
--health-timeout 10s
|
||||||
# --health-retries 10
|
--health-retries 10
|
||||||
# ports:
|
ports:
|
||||||
# - 6379:6379
|
- 6379:6379
|
||||||
# postgres:
|
postgres:
|
||||||
# image: postgres
|
image: postgres
|
||||||
# env:
|
env:
|
||||||
# POSTGRES_PASSWORD: postgres
|
POSTGRES_PASSWORD: postgres
|
||||||
# POSTGRES_USER: postgres
|
POSTGRES_USER: postgres
|
||||||
# options: >-
|
options: >-
|
||||||
# --health-cmd pg_isready
|
--health-cmd pg_isready
|
||||||
# --health-interval 1s
|
--health-interval 1s
|
||||||
# --health-timeout 10s
|
--health-timeout 10s
|
||||||
# --health-retries 10
|
--health-retries 10
|
||||||
# ports:
|
ports:
|
||||||
# - 5432:5432
|
- 5432:5432
|
||||||
|
|
||||||
# steps:
|
steps:
|
||||||
# - name: Checkout
|
- name: Checkout
|
||||||
# uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
# with:
|
with:
|
||||||
# fetch-depth: 0
|
fetch-depth: 0
|
||||||
#
|
|
||||||
# - name: Install dependencies
|
- name: Install dependencies
|
||||||
# uses: ./.github/actions/cache-deps
|
uses: ./.github/actions/cache-deps
|
||||||
# with:
|
with:
|
||||||
# extension: pipeline
|
extension: pipeline
|
||||||
#
|
|
||||||
# - name: Run API integration tests
|
- name: Run HTTP integration tests
|
||||||
# run: yarn test:integration:api
|
run: yarn test:integration:http
|
||||||
# env:
|
env:
|
||||||
# DB_USERNAME: postgres
|
DB_USERNAME: postgres
|
||||||
# DB_PASSWORD: postgres
|
DB_PASSWORD: postgres
|
||||||
# NODE_OPTIONS: "--max_old_space_size=4096"
|
NODE_OPTIONS: "--max_old_space_size=4096"
|
||||||
# CHUNK: ${{ matrix.chunk }}
|
CHUNK: ${{ matrix.chunk }}
|
||||||
# CHUNKS: ${{ needs.setup.outputs.api-chunks }}
|
CHUNKS: ${{ needs.setup.outputs.http-chunks }}
|
||||||
|
|
||||||
#integration-tests-api:
|
integration-tests-http:
|
||||||
# if: ${{ always() }}
|
if: ${{ always() }}
|
||||||
# runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
# needs: integration-tests-api-matrix
|
needs: integration-tests-http-matrix
|
||||||
# steps:
|
steps:
|
||||||
# - run: exit 1
|
- run: exit 1
|
||||||
# if: >-
|
if: >-
|
||||||
# ${{
|
${{
|
||||||
# contains(needs.integration-tests-api-matrix.result, 'failure')
|
contains(needs.integration-tests-http-matrix.result, 'failure')
|
||||||
# || contains(needs.integration-tests-api-matrix.result, 'cancelled')
|
|| contains(needs.integration-tests-http-matrix.result, 'cancelled')
|
||||||
# || contains(needs.integration-tests-api-matrix.result, 'skipped')
|
|| contains(needs.integration-tests-http-matrix.result, 'skipped')
|
||||||
# }}
|
}}
|
||||||
# - run: exit 0
|
- run: exit 0
|
||||||
# if: ${{ contains(needs.integration-tests-api-matrix.result, 'success') }}
|
if: ${{ contains(needs.integration-tests-http-matrix.result, 'success') }}
|
||||||
|
|
||||||
unit-tests:
|
unit-tests:
|
||||||
if: ${{ always() }}
|
if: ${{ always() }}
|
||||||
|
|||||||
@@ -0,0 +1,4 @@
|
|||||||
|
dist/
|
||||||
|
node_modules
|
||||||
|
*yarn-error.log
|
||||||
|
|
||||||
+575
-1032
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,12 @@
|
|||||||
|
process.chdir(__dirname)
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
name: "HTTP Integration Tests",
|
||||||
|
testEnvironment: `node`,
|
||||||
|
rootDir: "./",
|
||||||
|
transformIgnorePatterns: ["/dist", "/node_modules/"],
|
||||||
|
transform: {
|
||||||
|
"^.+\\.[jt]s$": ["@swc/jest"],
|
||||||
|
},
|
||||||
|
setupFiles: ["../setup-env.js"],
|
||||||
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
const { defineConfig } = require("@medusajs/utils")
|
||||||
|
const DB_HOST = process.env.DB_HOST
|
||||||
|
const DB_USERNAME = process.env.DB_USERNAME
|
||||||
|
const DB_PASSWORD = process.env.DB_PASSWORD
|
||||||
|
const DB_NAME = process.env.DB_TEMP_NAME
|
||||||
|
const DB_URL = `postgres://${DB_USERNAME}:${DB_PASSWORD}@${DB_HOST}/${DB_NAME}`
|
||||||
|
process.env.DATABASE_URL = DB_URL
|
||||||
|
process.env.LOG_LEVEL = "error"
|
||||||
|
|
||||||
|
module.exports = defineConfig({
|
||||||
|
admin: {
|
||||||
|
disable: true,
|
||||||
|
},
|
||||||
|
projectConfig: {
|
||||||
|
http: {
|
||||||
|
jwtSecret: "test",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
{
|
||||||
|
"name": "integration-tests-http",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"main": "index.js",
|
||||||
|
"license": "MIT",
|
||||||
|
"private": true,
|
||||||
|
"scripts": {
|
||||||
|
"test:integration": "jest --no-cache --maxWorkers=50% --bail --detectOpenHandles --forceExit --logHeapUsage",
|
||||||
|
"test:integration:chunk": "jest --silent --no-cache --bail --maxWorkers=50% --forceExit --testPathPattern=$(echo $CHUNKS | jq -r \".[${CHUNK}] | .[]\")",
|
||||||
|
"build": "tsc ./src/* --allowJs --outDir ./dist"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@medusajs/api-key": "workspace:^",
|
||||||
|
"@medusajs/auth": "workspace:*",
|
||||||
|
"@medusajs/cache-inmemory": "workspace:*",
|
||||||
|
"@medusajs/customer": "workspace:^",
|
||||||
|
"@medusajs/event-bus-local": "workspace:*",
|
||||||
|
"@medusajs/fulfillment": "workspace:^",
|
||||||
|
"@medusajs/fulfillment-manual": "workspace:^",
|
||||||
|
"@medusajs/inventory-next": "workspace:^",
|
||||||
|
"@medusajs/medusa": "workspace:*",
|
||||||
|
"@medusajs/modules-sdk": "workspace:^",
|
||||||
|
"@medusajs/pricing": "workspace:^",
|
||||||
|
"@medusajs/product": "workspace:^",
|
||||||
|
"@medusajs/promotion": "workspace:^",
|
||||||
|
"@medusajs/region": "workspace:^",
|
||||||
|
"@medusajs/stock-location-next": "workspace:^",
|
||||||
|
"@medusajs/store": "workspace:^",
|
||||||
|
"@medusajs/tax": "workspace:^",
|
||||||
|
"@medusajs/user": "workspace:^",
|
||||||
|
"@medusajs/utils": "workspace:^",
|
||||||
|
"@medusajs/workflow-engine-inmemory": "workspace:*",
|
||||||
|
"faker": "^5.5.3",
|
||||||
|
"medusa-test-utils": "workspace:*",
|
||||||
|
"pg": "^8.11.0"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@medusajs/types": "workspace:^",
|
||||||
|
"@swc/core": "^1.4.8",
|
||||||
|
"@swc/jest": "^0.2.36",
|
||||||
|
"jest": "^26.6.3",
|
||||||
|
"jest-environment-node": "26.6.2",
|
||||||
|
"typescript": "^4.1.3"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
// noop
|
||||||
@@ -13,6 +13,7 @@ module.exports = {
|
|||||||
roots: pkgs,
|
roots: pkgs,
|
||||||
projects: [
|
projects: [
|
||||||
"<rootDir>/integration-tests/api/jest.config.js",
|
"<rootDir>/integration-tests/api/jest.config.js",
|
||||||
|
"<rootDir>/integration-tests/http/jest.config.js",
|
||||||
"<rootDir>/integration-tests/plugins/jest.config.js",
|
"<rootDir>/integration-tests/plugins/jest.config.js",
|
||||||
"<rootDir>/integration-tests/repositories/jest.config.js",
|
"<rootDir>/integration-tests/repositories/jest.config.js",
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -63,6 +63,7 @@
|
|||||||
"test:chunk": "./scripts/run-workspace-unit-tests-in-chunks.sh",
|
"test:chunk": "./scripts/run-workspace-unit-tests-in-chunks.sh",
|
||||||
"test:integration:packages": "turbo run test:integration --concurrency=50% --no-daemon --no-cache --force --filter='./packages/*' --filter='./packages/core/*' --filter='./packages/cli/*' --filter='./packages/modules/*' --filter='./packages/modules/providers/*'",
|
"test:integration:packages": "turbo run test:integration --concurrency=50% --no-daemon --no-cache --force --filter='./packages/*' --filter='./packages/core/*' --filter='./packages/cli/*' --filter='./packages/modules/*' --filter='./packages/modules/providers/*'",
|
||||||
"test:integration:api": "turbo run test:integration:chunk --concurrency=50% --no-daemon --no-cache --force --filter=integration-tests-api",
|
"test:integration:api": "turbo run test:integration:chunk --concurrency=50% --no-daemon --no-cache --force --filter=integration-tests-api",
|
||||||
|
"test:integration:http": "turbo run test:integration:chunk --concurrency=50% --no-daemon --no-cache --force --filter=integration-tests-http",
|
||||||
"test:integration:modules": "turbo run test:integration:chunk --concurrency=50% --no-daemon --no-cache --force --filter=integration-tests-modules",
|
"test:integration:modules": "turbo run test:integration:chunk --concurrency=50% --no-daemon --no-cache --force --filter=integration-tests-modules",
|
||||||
"openapi:generate": "yarn ./packages/cli/oas/oas-github-ci run ci --with-full-file",
|
"openapi:generate": "yarn ./packages/cli/oas/oas-github-ci run ci --with-full-file",
|
||||||
"medusa-oas": "yarn ./packages/cli/oas/medusa-oas-cli run medusa-oas",
|
"medusa-oas": "yarn ./packages/cli/oas/medusa-oas-cli run medusa-oas",
|
||||||
|
|||||||
@@ -22,9 +22,7 @@ export const GET = async (
|
|||||||
entryPoint: "product_option",
|
entryPoint: "product_option",
|
||||||
variables: {
|
variables: {
|
||||||
filters: { ...req.filterableFields, product_id: productId },
|
filters: { ...req.filterableFields, product_id: productId },
|
||||||
order: req.listConfig.order,
|
...req.remoteQueryConfig.pagination,
|
||||||
skip: req.listConfig.skip,
|
|
||||||
take: req.listConfig.take,
|
|
||||||
},
|
},
|
||||||
fields: req.remoteQueryConfig.fields,
|
fields: req.remoteQueryConfig.fields,
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ export const retrieveOptionConfig = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const listOptionConfig = {
|
export const listOptionConfig = {
|
||||||
...retrieveVariantConfig,
|
...retrieveOptionConfig,
|
||||||
defaultLimit: 50,
|
defaultLimit: 50,
|
||||||
isList: true,
|
isList: true,
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -60,6 +60,9 @@ export const AdminGetProductOptionsParams = createFindParams({
|
|||||||
q: z.string().optional(),
|
q: z.string().optional(),
|
||||||
id: z.union([z.string(), z.array(z.string())]).optional(),
|
id: z.union([z.string(), z.array(z.string())]).optional(),
|
||||||
title: z.string().optional(),
|
title: z.string().optional(),
|
||||||
|
created_at: createOperatorMap().optional(),
|
||||||
|
updated_at: createOperatorMap().optional(),
|
||||||
|
deleted_at: createOperatorMap().optional(),
|
||||||
$and: z.lazy(() => AdminGetProductsParams.array()).optional(),
|
$and: z.lazy(() => AdminGetProductsParams.array()).optional(),
|
||||||
$or: z.lazy(() => AdminGetProductsParams.array()).optional(),
|
$or: z.lazy(() => AdminGetProductsParams.array()).optional(),
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -19864,6 +19864,42 @@ __metadata:
|
|||||||
languageName: unknown
|
languageName: unknown
|
||||||
linkType: soft
|
linkType: soft
|
||||||
|
|
||||||
|
"integration-tests-http@workspace:integration-tests/http":
|
||||||
|
version: 0.0.0-use.local
|
||||||
|
resolution: "integration-tests-http@workspace:integration-tests/http"
|
||||||
|
dependencies:
|
||||||
|
"@medusajs/api-key": "workspace:^"
|
||||||
|
"@medusajs/auth": "workspace:*"
|
||||||
|
"@medusajs/cache-inmemory": "workspace:*"
|
||||||
|
"@medusajs/customer": "workspace:^"
|
||||||
|
"@medusajs/event-bus-local": "workspace:*"
|
||||||
|
"@medusajs/fulfillment": "workspace:^"
|
||||||
|
"@medusajs/fulfillment-manual": "workspace:^"
|
||||||
|
"@medusajs/inventory-next": "workspace:^"
|
||||||
|
"@medusajs/medusa": "workspace:*"
|
||||||
|
"@medusajs/modules-sdk": "workspace:^"
|
||||||
|
"@medusajs/pricing": "workspace:^"
|
||||||
|
"@medusajs/product": "workspace:^"
|
||||||
|
"@medusajs/promotion": "workspace:^"
|
||||||
|
"@medusajs/region": "workspace:^"
|
||||||
|
"@medusajs/stock-location-next": "workspace:^"
|
||||||
|
"@medusajs/store": "workspace:^"
|
||||||
|
"@medusajs/tax": "workspace:^"
|
||||||
|
"@medusajs/types": "workspace:^"
|
||||||
|
"@medusajs/user": "workspace:^"
|
||||||
|
"@medusajs/utils": "workspace:^"
|
||||||
|
"@medusajs/workflow-engine-inmemory": "workspace:*"
|
||||||
|
"@swc/core": ^1.4.8
|
||||||
|
"@swc/jest": ^0.2.36
|
||||||
|
faker: ^5.5.3
|
||||||
|
jest: ^26.6.3
|
||||||
|
jest-environment-node: 26.6.2
|
||||||
|
medusa-test-utils: "workspace:*"
|
||||||
|
pg: ^8.11.0
|
||||||
|
typescript: ^4.1.3
|
||||||
|
languageName: unknown
|
||||||
|
linkType: soft
|
||||||
|
|
||||||
"integration-tests-modules@workspace:integration-tests/modules":
|
"integration-tests-modules@workspace:integration-tests/modules":
|
||||||
version: 0.0.0-use.local
|
version: 0.0.0-use.local
|
||||||
resolution: "integration-tests-modules@workspace:integration-tests/modules"
|
resolution: "integration-tests-modules@workspace:integration-tests/modules"
|
||||||
|
|||||||
Reference in New Issue
Block a user