chore(integration-tests): Flaky tests (#3126)

This commit is contained in:
Adrien de Peretti
2023-01-27 17:45:54 +01:00
committed by GitHub
parent 4f0d8992a0
commit e581d3bd90
6 changed files with 49 additions and 19 deletions

View File

@@ -0,0 +1,5 @@
---
"@medusajs/medusa": patch
---
chore: fix flaky tests

View File

@@ -1915,9 +1915,10 @@ describe("/admin/products", () => {
],
}
const variantId = "test-variant"
const response = await api
.post(
"/admin/products/test-product/variants/test-variant",
`/admin/products/test-product/variants/${variantId}`,
data,
adminHeaders
)
@@ -1927,9 +1928,12 @@ describe("/admin/products", () => {
expect(response.status).toEqual(200)
expect(response.data.product.variants[0].prices.length).toEqual(2)
const variant = response.data.product.variants.find(
(v) => v.id === variantId
)
expect(variant.prices.length).toEqual(2)
expect(response.data.product.variants[0].prices).toEqual(
expect(variant.prices).toEqual(
expect.arrayContaining([
expect.objectContaining({
amount: 8000,
@@ -1958,9 +1962,10 @@ describe("/admin/products", () => {
],
}
const variantId = "test-variant_3"
const response = await api
.post(
"/admin/products/test-product1/variants/test-variant_3",
`/admin/products/test-product1/variants/${variantId}`,
data,
adminHeaders
)
@@ -1970,11 +1975,13 @@ describe("/admin/products", () => {
expect(response.status).toEqual(200)
expect(response.data.product.variants[0].prices.length).toEqual(
data.prices.length
const variant = response.data.product.variants.find(
(v) => v.id === variantId
)
expect(response.data.product.variants[0].prices).toEqual(
expect(variant.prices.length).toEqual(data.prices.length)
expect(variant.prices).toEqual(
expect.arrayContaining([
expect.objectContaining({
amount: 8000,

View File

@@ -471,8 +471,18 @@ describe("/store/products", () => {
console.log(err)
})
expect(response.data.products).toHaveLength(5)
expect(response.data.products).toEqual(
const products = response.data.products
expect(products).toHaveLength(5)
const testProduct = products.find((p) => p.id === testProductId)
expect(testProduct.variants).toHaveLength(3)
for (const variant of testProduct.variants) {
expect(variant.prices).toHaveLength(2)
}
expect(products).toEqual(
expect.arrayContaining([
expect.objectContaining({
id: testProductId1,
@@ -481,11 +491,11 @@ describe("/store/products", () => {
expect.objectContaining({
id: testProductId,
collection_id: "test-collection",
variants: [
variants: expect.arrayContaining([
expect.objectContaining({
original_price: 100,
calculated_price: 80,
prices: [
prices: expect.arrayContaining([
expect.objectContaining({
id: "test-price",
currency_code: "usd",
@@ -496,12 +506,12 @@ describe("/store/products", () => {
currency_code: "usd",
amount: 80,
}),
],
]),
}),
expect.objectContaining({
original_price: 100,
calculated_price: 80,
prices: [
prices: expect.arrayContaining([
expect.objectContaining({
id: "test-price1",
currency_code: "usd",
@@ -512,12 +522,12 @@ describe("/store/products", () => {
currency_code: "usd",
amount: 80,
}),
],
]),
}),
expect.objectContaining({
original_price: 100,
calculated_price: 80,
prices: [
prices: expect.arrayContaining([
expect.objectContaining({
id: "test-price2",
currency_code: "usd",
@@ -528,9 +538,9 @@ describe("/store/products", () => {
currency_code: "usd",
amount: 80,
}),
],
]),
}),
],
]),
}),
expect.objectContaining({
id: testProductFilteringId2,

View File

@@ -169,7 +169,10 @@ export class ProductRepository extends Repository<Product> {
"variants.deleted_at IS NULL"
)
order["variants.variant_rank"] = "ASC"
if (!Object.keys(order).some((key) => key.startsWith("variants"))) {
// variant_rank being select false, apply the filter here directly
querybuilder.addOrderBy(`${toplevel}.variant_rank`, "ASC")
}
} else {
querybuilder = querybuilder.leftJoinAndSelect(
`products.${toplevel}`,

View File

@@ -650,6 +650,9 @@ describe("ProductVariantService", () => {
.mockImplementation(() => Promise.resolve())
const regionService = {
withTransaction: function () {
return this
},
list: jest.fn().mockImplementation((config) => {
const idOrIds = config.id

View File

@@ -347,9 +347,11 @@ class ProductVariantService extends TransactionBaseService {
prices
)
const regionsServiceTx = this.regionService_.withTransaction(manager)
for (const price of prices) {
if (price.region_id) {
const region = await this.regionService_.retrieve(price.region_id)
const region = await regionsServiceTx.retrieve(price.region_id)
await this.setRegionPrice(variantId, {
currency_code: region.currency_code,