feat(medusa,utils): Add support for multiple where condition on the same column (#4046)
This commit is contained in:
@@ -1,5 +1,18 @@
|
||||
import { FindOptionsOrder, FindOptionsSelect, In, MoreThan, Not } from "typeorm"
|
||||
import { addOrderToSelect, buildLegacyFieldsListFrom, buildQuery } from "../build-query"
|
||||
import {
|
||||
And,
|
||||
FindOptionsOrder,
|
||||
FindOptionsSelect,
|
||||
In,
|
||||
LessThanOrEqual,
|
||||
MoreThan,
|
||||
MoreThanOrEqual,
|
||||
Not,
|
||||
} from "typeorm"
|
||||
import {
|
||||
addOrderToSelect,
|
||||
buildLegacyFieldsListFrom,
|
||||
buildQuery,
|
||||
} from "../build-query"
|
||||
|
||||
describe("buildQuery", () => {
|
||||
it("successfully creates query", () => {
|
||||
@@ -13,8 +26,12 @@ describe("buildQuery", () => {
|
||||
date: { gt: date },
|
||||
amount: { gt: 10 },
|
||||
rule: {
|
||||
type: "fixed"
|
||||
}
|
||||
type: "fixed",
|
||||
},
|
||||
updated_at: {
|
||||
gte: "value",
|
||||
lte: "value",
|
||||
},
|
||||
},
|
||||
{
|
||||
select: [
|
||||
@@ -57,8 +74,8 @@ describe("buildQuery", () => {
|
||||
order: {
|
||||
id: "ASC",
|
||||
"items.id": "ASC",
|
||||
"items.variant.id": "ASC"
|
||||
}
|
||||
"items.variant.id": "ASC",
|
||||
},
|
||||
}
|
||||
)
|
||||
|
||||
@@ -70,8 +87,9 @@ describe("buildQuery", () => {
|
||||
date: MoreThan(date),
|
||||
amount: MoreThan(10),
|
||||
rule: {
|
||||
type: "fixed"
|
||||
}
|
||||
type: "fixed",
|
||||
},
|
||||
updated_at: And(MoreThanOrEqual("value"), LessThanOrEqual("value")),
|
||||
},
|
||||
select: {
|
||||
order: {
|
||||
@@ -120,21 +138,21 @@ describe("buildQuery", () => {
|
||||
},
|
||||
items: {
|
||||
variants: {
|
||||
product: true
|
||||
product: true,
|
||||
},
|
||||
tax_lines: true,
|
||||
adjustments: true
|
||||
}
|
||||
adjustments: true,
|
||||
},
|
||||
},
|
||||
order: {
|
||||
id: "ASC",
|
||||
items: {
|
||||
id: "ASC",
|
||||
variant: {
|
||||
id: "ASC"
|
||||
}
|
||||
}
|
||||
}
|
||||
id: "ASC",
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
})
|
||||
})
|
||||
@@ -166,22 +184,24 @@ describe("buildLegacyFieldsListFrom", () => {
|
||||
})
|
||||
|
||||
expect(q.length).toBe(14)
|
||||
expect(q).toEqual(expect.arrayContaining([
|
||||
"order",
|
||||
"order.items",
|
||||
"order.swaps",
|
||||
"order.swaps.additional_items",
|
||||
"order.discounts",
|
||||
"order.discounts.rule",
|
||||
"order.claims",
|
||||
"order.claims.additional_items",
|
||||
"additional_items",
|
||||
"additional_items.variant",
|
||||
"return_order",
|
||||
"return_order.items",
|
||||
"return_order.shipping_method",
|
||||
"return_order.shipping_method.tax_lines",
|
||||
]))
|
||||
expect(q).toEqual(
|
||||
expect.arrayContaining([
|
||||
"order",
|
||||
"order.items",
|
||||
"order.swaps",
|
||||
"order.swaps.additional_items",
|
||||
"order.discounts",
|
||||
"order.discounts.rule",
|
||||
"order.claims",
|
||||
"order.claims.additional_items",
|
||||
"additional_items",
|
||||
"additional_items.variant",
|
||||
"return_order",
|
||||
"return_order.items",
|
||||
"return_order.shipping_method",
|
||||
"return_order.shipping_method.tax_lines",
|
||||
])
|
||||
)
|
||||
})
|
||||
|
||||
it("successfully build back relation object shape to list", () => {
|
||||
@@ -209,35 +229,37 @@ describe("buildLegacyFieldsListFrom", () => {
|
||||
},
|
||||
items: {
|
||||
variants: {
|
||||
product: true
|
||||
product: true,
|
||||
},
|
||||
tax_lines: true,
|
||||
adjustments: true
|
||||
}
|
||||
adjustments: true,
|
||||
},
|
||||
})
|
||||
|
||||
expect(q.length).toBe(19)
|
||||
expect(q).toEqual(expect.arrayContaining([
|
||||
"order",
|
||||
"order.items",
|
||||
"order.swaps",
|
||||
"order.swaps.additional_items",
|
||||
"order.discounts",
|
||||
"order.discounts.rule",
|
||||
"order.claims",
|
||||
"order.claims.additional_items",
|
||||
"additional_items",
|
||||
"additional_items.variant",
|
||||
"return_order",
|
||||
"return_order.items",
|
||||
"return_order.shipping_method",
|
||||
"return_order.shipping_method.tax_lines",
|
||||
"items.variants",
|
||||
"items.variants.product",
|
||||
"items",
|
||||
"items.tax_lines",
|
||||
"items.adjustments",
|
||||
]))
|
||||
expect(q).toEqual(
|
||||
expect.arrayContaining([
|
||||
"order",
|
||||
"order.items",
|
||||
"order.swaps",
|
||||
"order.swaps.additional_items",
|
||||
"order.discounts",
|
||||
"order.discounts.rule",
|
||||
"order.claims",
|
||||
"order.claims.additional_items",
|
||||
"additional_items",
|
||||
"additional_items.variant",
|
||||
"return_order",
|
||||
"return_order.items",
|
||||
"return_order.shipping_method",
|
||||
"return_order.shipping_method.tax_lines",
|
||||
"items.variants",
|
||||
"items.variants.product",
|
||||
"items",
|
||||
"items.tax_lines",
|
||||
"items.adjustments",
|
||||
])
|
||||
)
|
||||
})
|
||||
|
||||
it("successfully build back order object shape to list", () => {
|
||||
@@ -246,37 +268,39 @@ describe("buildLegacyFieldsListFrom", () => {
|
||||
items: {
|
||||
id: "ASC",
|
||||
variant: {
|
||||
id: "ASC"
|
||||
}
|
||||
}
|
||||
id: "ASC",
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
expect(q.length).toBe(5)
|
||||
expect(q).toEqual(expect.arrayContaining([
|
||||
"id",
|
||||
"items",
|
||||
"items.id",
|
||||
"items.variant",
|
||||
"items.variant.id"
|
||||
]))
|
||||
expect(q).toEqual(
|
||||
expect.arrayContaining([
|
||||
"id",
|
||||
"items",
|
||||
"items.id",
|
||||
"items.variant",
|
||||
"items.variant.id",
|
||||
])
|
||||
)
|
||||
})
|
||||
|
||||
describe('addOrderToSelect', function () {
|
||||
describe("addOrderToSelect", function () {
|
||||
it("successfully add the order fields to the select object", () => {
|
||||
const select: FindOptionsSelect<any> = {
|
||||
item: {
|
||||
variant: {
|
||||
id: true
|
||||
}
|
||||
}
|
||||
id: true,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
const order: FindOptionsOrder<any> = {
|
||||
item: {
|
||||
variant: {
|
||||
rank: "ASC"
|
||||
}
|
||||
}
|
||||
rank: "ASC",
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
addOrderToSelect(order, select)
|
||||
@@ -285,10 +309,10 @@ describe("buildLegacyFieldsListFrom", () => {
|
||||
item: {
|
||||
variant: {
|
||||
id: true,
|
||||
rank: true
|
||||
}
|
||||
}
|
||||
rank: true,
|
||||
},
|
||||
},
|
||||
})
|
||||
})
|
||||
});
|
||||
})
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user