@labdigital/commercetools-mock 2.17.1 → 2.18.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +4351 -4099
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +266 -413
- package/dist/index.d.ts +266 -413
- package/dist/index.js +4351 -4099
- package/dist/index.js.map +1 -1
- package/package.json +47 -47
- package/src/constants.ts +2 -2
- package/src/ctMock.test.ts +11 -11
- package/src/ctMock.ts +141 -127
- package/src/deprecation.ts +8 -0
- package/src/exceptions.ts +17 -15
- package/src/helpers.ts +32 -32
- package/src/index.test.ts +128 -128
- package/src/index.ts +3 -3
- package/src/lib/expandParser.ts +13 -13
- package/src/lib/haversine.test.ts +9 -9
- package/src/lib/haversine.ts +11 -11
- package/src/lib/masking.ts +11 -11
- package/src/lib/parser.ts +2 -2
- package/src/lib/password.ts +23 -3
- package/src/lib/predicateParser.test.ts +185 -183
- package/src/lib/predicateParser.ts +234 -234
- package/src/lib/projectionSearchFilter.test.ts +103 -101
- package/src/lib/projectionSearchFilter.ts +152 -150
- package/src/lib/proxy.ts +5 -5
- package/src/oauth/errors.ts +4 -4
- package/src/oauth/helpers.ts +6 -6
- package/src/oauth/server.test.ts +86 -86
- package/src/oauth/server.ts +158 -144
- package/src/oauth/store.ts +44 -43
- package/src/priceSelector.test.ts +35 -35
- package/src/priceSelector.ts +30 -30
- package/src/product-projection-search.ts +136 -134
- package/src/projectAPI.test.ts +7 -7
- package/src/projectAPI.ts +24 -22
- package/src/repositories/abstract.ts +168 -116
- package/src/repositories/associate-role.ts +90 -77
- package/src/repositories/attribute-group.ts +51 -40
- package/src/repositories/business-unit.ts +168 -148
- package/src/repositories/cart/actions.ts +489 -0
- package/src/repositories/cart/helpers.ts +30 -0
- package/src/repositories/cart/index.ts +180 -0
- package/src/repositories/cart-discount/actions.ts +148 -0
- package/src/repositories/cart-discount/index.ts +86 -0
- package/src/repositories/category/actions.ts +231 -0
- package/src/repositories/category/index.ts +52 -0
- package/src/repositories/channel.ts +88 -90
- package/src/repositories/custom-object.ts +46 -45
- package/src/repositories/customer/actions.ts +165 -0
- package/src/repositories/customer/index.ts +79 -0
- package/src/repositories/customer-group.ts +66 -55
- package/src/repositories/discount-code/actions.ts +149 -0
- package/src/repositories/discount-code/index.ts +50 -0
- package/src/repositories/errors.ts +10 -10
- package/src/repositories/extension.ts +64 -62
- package/src/repositories/helpers.ts +117 -118
- package/src/repositories/index.ts +80 -79
- package/src/repositories/inventory-entry/actions.ts +84 -0
- package/src/repositories/inventory-entry/index.ts +44 -0
- package/src/repositories/my-customer.ts +114 -0
- package/src/repositories/my-order.ts +8 -8
- package/src/repositories/order/actions.ts +281 -0
- package/src/repositories/{order.test.ts → order/index.test.ts} +77 -77
- package/src/repositories/order/index.ts +260 -0
- package/src/repositories/order-edit.ts +10 -23
- package/src/repositories/payment/actions.ts +305 -0
- package/src/repositories/payment/helpers.ts +17 -0
- package/src/repositories/payment/index.ts +56 -0
- package/src/repositories/product/actions.ts +943 -0
- package/src/repositories/product/helpers.ts +98 -0
- package/src/repositories/product/index.ts +130 -0
- package/src/repositories/product-discount.ts +127 -117
- package/src/repositories/product-projection.ts +56 -62
- package/src/repositories/product-selection.ts +31 -28
- package/src/repositories/product-type.ts +136 -134
- package/src/repositories/project.ts +133 -118
- package/src/repositories/quote-request.ts +7 -19
- package/src/repositories/quote.ts +7 -22
- package/src/repositories/review.ts +13 -26
- package/src/repositories/shipping-method/actions.ts +198 -0
- package/src/repositories/shipping-method/helpers.ts +10 -0
- package/src/repositories/shipping-method/index.ts +138 -0
- package/src/repositories/shopping-list/actions.ts +295 -0
- package/src/repositories/shopping-list/index.ts +122 -0
- package/src/repositories/staged-quote.ts +7 -20
- package/src/repositories/standalone-price.ts +57 -44
- package/src/repositories/state.ts +113 -68
- package/src/repositories/store.ts +106 -94
- package/src/repositories/subscription.ts +46 -22
- package/src/repositories/tax-category/actions.ts +94 -0
- package/src/repositories/tax-category/helpers.ts +8 -0
- package/src/repositories/tax-category/index.ts +25 -0
- package/src/repositories/type/actions.ts +162 -0
- package/src/repositories/type/index.ts +24 -0
- package/src/repositories/zone.ts +62 -58
- package/src/schemas/update-request.ts +12 -0
- package/src/server.ts +9 -9
- package/src/services/abstract.ts +85 -72
- package/src/services/associate-roles.test.ts +27 -27
- package/src/services/associate-roles.ts +7 -7
- package/src/services/attribute-group.ts +7 -7
- package/src/services/business-units.test.ts +28 -28
- package/src/services/business-units.ts +7 -7
- package/src/services/cart-discount.test.ts +199 -199
- package/src/services/cart-discount.ts +7 -7
- package/src/services/cart.test.ts +261 -261
- package/src/services/cart.ts +22 -21
- package/src/services/category.test.ts +121 -121
- package/src/services/category.ts +7 -7
- package/src/services/channel.ts +7 -7
- package/src/services/custom-object.test.ts +130 -130
- package/src/services/custom-object.ts +34 -31
- package/src/services/customer-group.ts +7 -7
- package/src/services/customer.test.ts +205 -205
- package/src/services/customer.ts +23 -36
- package/src/services/discount-code.ts +7 -7
- package/src/services/extension.ts +7 -7
- package/src/services/index.ts +85 -81
- package/src/services/inventory-entry.test.ts +106 -106
- package/src/services/inventory-entry.ts +7 -7
- package/src/services/my-cart.test.ts +56 -56
- package/src/services/my-cart.ts +20 -20
- package/src/services/my-customer.test.ts +155 -104
- package/src/services/my-customer.ts +66 -75
- package/src/services/my-order.ts +16 -16
- package/src/services/my-payment.test.ts +40 -40
- package/src/services/my-payment.ts +7 -7
- package/src/services/my-shopping-list.ts +7 -7
- package/src/services/order.test.ts +243 -243
- package/src/services/order.ts +23 -18
- package/src/services/payment.test.ts +40 -40
- package/src/services/payment.ts +7 -7
- package/src/services/product-discount.ts +7 -7
- package/src/services/product-projection.test.ts +190 -190
- package/src/services/product-projection.ts +34 -32
- package/src/services/product-selection.test.ts +19 -19
- package/src/services/product-selection.ts +7 -7
- package/src/services/product-type.test.ts +38 -38
- package/src/services/product-type.ts +7 -7
- package/src/services/product.test.ts +658 -656
- package/src/services/product.ts +7 -7
- package/src/services/project.test.ts +29 -24
- package/src/services/project.ts +22 -17
- package/src/services/reviews.ts +7 -7
- package/src/services/shipping-method.test.ts +78 -78
- package/src/services/shipping-method.ts +16 -16
- package/src/services/shopping-list.test.ts +170 -170
- package/src/services/shopping-list.ts +7 -7
- package/src/services/standalone-price.test.ts +112 -112
- package/src/services/standalone-price.ts +7 -7
- package/src/services/state.test.ts +30 -30
- package/src/services/state.ts +7 -7
- package/src/services/store.test.ts +40 -40
- package/src/services/store.ts +7 -7
- package/src/services/subscription.ts +7 -7
- package/src/services/tax-category.test.ts +43 -43
- package/src/services/tax-category.ts +7 -7
- package/src/services/type.ts +7 -7
- package/src/services/zone.ts +7 -7
- package/src/shippingCalculator.test.ts +43 -43
- package/src/shippingCalculator.ts +23 -23
- package/src/storage/abstract.ts +36 -34
- package/src/storage/in-memory.ts +237 -233
- package/src/storage/index.ts +2 -2
- package/src/types.ts +91 -91
- package/src/validate.ts +18 -0
- package/src/repositories/cart-discount.ts +0 -219
- package/src/repositories/cart.ts +0 -659
- package/src/repositories/category.ts +0 -256
- package/src/repositories/customer.ts +0 -228
- package/src/repositories/discount-code.ts +0 -181
- package/src/repositories/inventory-entry.ts +0 -109
- package/src/repositories/order.ts +0 -514
- package/src/repositories/payment.ts +0 -342
- package/src/repositories/product.ts +0 -1106
- package/src/repositories/shipping-method.ts +0 -312
- package/src/repositories/shopping-list.ts +0 -392
- package/src/repositories/tax-category.ts +0 -111
- package/src/repositories/type.ts +0 -172
|
@@ -1,35 +1,35 @@
|
|
|
1
|
-
import type { VariableMap } from
|
|
2
|
-
import { describe, expect, test } from
|
|
3
|
-
import {
|
|
1
|
+
import type { VariableMap } from "@commercetools/platform-sdk";
|
|
2
|
+
import { describe, expect, test } from "vitest";
|
|
3
|
+
import { PredicateError, parseQueryExpression } from "./predicateParser";
|
|
4
4
|
|
|
5
|
-
describe(
|
|
5
|
+
describe("Predicate filter", () => {
|
|
6
6
|
const exampleObject = {
|
|
7
|
-
stringProperty:
|
|
7
|
+
stringProperty: "foobar",
|
|
8
8
|
numberProperty: 1234,
|
|
9
|
-
arrayProperty: [
|
|
9
|
+
arrayProperty: ["foo", "bar", "nar"],
|
|
10
10
|
notDefined: undefined,
|
|
11
11
|
emptyArrayProperty: [],
|
|
12
12
|
booleanProperty: true,
|
|
13
13
|
nested: {
|
|
14
14
|
numberProperty: 1234,
|
|
15
15
|
objectProperty: {
|
|
16
|
-
stringProperty:
|
|
16
|
+
stringProperty: "foobar",
|
|
17
17
|
booleanProperty: true,
|
|
18
18
|
},
|
|
19
19
|
array: [
|
|
20
20
|
{
|
|
21
21
|
numberProperty: 1234,
|
|
22
|
-
stringProperty:
|
|
22
|
+
stringProperty: "foo",
|
|
23
23
|
objectProperty: {
|
|
24
|
-
stringProperty:
|
|
24
|
+
stringProperty: "foo",
|
|
25
25
|
booleanProperty: true,
|
|
26
26
|
},
|
|
27
27
|
},
|
|
28
28
|
{
|
|
29
29
|
numberProperty: 2345,
|
|
30
|
-
stringProperty:
|
|
30
|
+
stringProperty: "bar",
|
|
31
31
|
objectProperty: {
|
|
32
|
-
stringProperty:
|
|
32
|
+
stringProperty: "bar",
|
|
33
33
|
booleanProperty: false,
|
|
34
34
|
},
|
|
35
35
|
},
|
|
@@ -39,18 +39,18 @@ describe('Predicate filter', () => {
|
|
|
39
39
|
{
|
|
40
40
|
nestedArray: [
|
|
41
41
|
{
|
|
42
|
-
stringProperty:
|
|
42
|
+
stringProperty: "foo",
|
|
43
43
|
nested: [
|
|
44
44
|
{
|
|
45
|
-
stringProperty:
|
|
45
|
+
stringProperty: "foo",
|
|
46
46
|
},
|
|
47
47
|
],
|
|
48
48
|
},
|
|
49
49
|
{
|
|
50
|
-
stringProperty:
|
|
50
|
+
stringProperty: "bar",
|
|
51
51
|
nested: [
|
|
52
52
|
{
|
|
53
|
-
stringProperty:
|
|
53
|
+
stringProperty: "bar",
|
|
54
54
|
},
|
|
55
55
|
],
|
|
56
56
|
},
|
|
@@ -59,18 +59,18 @@ describe('Predicate filter', () => {
|
|
|
59
59
|
{
|
|
60
60
|
nestedArray: [
|
|
61
61
|
{
|
|
62
|
-
stringProperty:
|
|
62
|
+
stringProperty: "foo-2",
|
|
63
63
|
nested: [
|
|
64
64
|
{
|
|
65
|
-
stringProperty:
|
|
65
|
+
stringProperty: "foo-2",
|
|
66
66
|
},
|
|
67
67
|
],
|
|
68
68
|
},
|
|
69
69
|
{
|
|
70
|
-
stringProperty:
|
|
70
|
+
stringProperty: "bar-2",
|
|
71
71
|
nested: [
|
|
72
72
|
{
|
|
73
|
-
stringProperty:
|
|
73
|
+
stringProperty: "bar-2",
|
|
74
74
|
},
|
|
75
75
|
],
|
|
76
76
|
},
|
|
@@ -80,194 +80,196 @@ describe('Predicate filter', () => {
|
|
|
80
80
|
|
|
81
81
|
// Longitude, latitude
|
|
82
82
|
geoLocation: [5.110230209615395, 52.06969591642097],
|
|
83
|
-
}
|
|
83
|
+
};
|
|
84
84
|
|
|
85
85
|
const match = (pattern: string | string[], vars?: VariableMap) => {
|
|
86
|
-
const matchFunc = parseQueryExpression(pattern)
|
|
87
|
-
return matchFunc(exampleObject, vars || {})
|
|
88
|
-
}
|
|
86
|
+
const matchFunc = parseQueryExpression(pattern);
|
|
87
|
+
return matchFunc(exampleObject, vars || {});
|
|
88
|
+
};
|
|
89
89
|
|
|
90
90
|
test('stringProperty = "foobar"', async () => {
|
|
91
|
-
expect(match(`stringProperty="foobar"`)).toBeTruthy()
|
|
92
|
-
expect(match(`stringProperty!="foobar"`)).toBeFalsy()
|
|
91
|
+
expect(match(`stringProperty="foobar"`)).toBeTruthy();
|
|
92
|
+
expect(match(`stringProperty!="foobar"`)).toBeFalsy();
|
|
93
93
|
|
|
94
|
-
expect(match(`stringProperty=:val`, { val:
|
|
95
|
-
})
|
|
94
|
+
expect(match(`stringProperty=:val`, { val: "foobar" })).toBeTruthy();
|
|
95
|
+
});
|
|
96
96
|
|
|
97
|
-
test(
|
|
98
|
-
expect(match(`booleanProperty != true`)).toBeFalsy()
|
|
99
|
-
expect(match(`booleanProperty = true`)).toBeTruthy()
|
|
97
|
+
test("booleanProperty = true", async () => {
|
|
98
|
+
expect(match(`booleanProperty != true`)).toBeFalsy();
|
|
99
|
+
expect(match(`booleanProperty = true`)).toBeTruthy();
|
|
100
100
|
|
|
101
|
-
expect(match(`booleanProperty=:val`, { val: true })).toBeTruthy()
|
|
102
|
-
})
|
|
101
|
+
expect(match(`booleanProperty=:val`, { val: true })).toBeTruthy();
|
|
102
|
+
});
|
|
103
103
|
|
|
104
104
|
test('stringProperty matches ignore case "foobar"', async () => {
|
|
105
|
-
expect(match(`stringProperty="FOObar"`)).toBeFalsy()
|
|
106
|
-
expect(match(`stringProperty matches ignore case "FOObar"`)).toBeTruthy()
|
|
105
|
+
expect(match(`stringProperty="FOObar"`)).toBeFalsy();
|
|
106
|
+
expect(match(`stringProperty matches ignore case "FOObar"`)).toBeTruthy();
|
|
107
107
|
expect(
|
|
108
|
-
match(`stringProperty matches ignore case :val`, { val:
|
|
109
|
-
).toBeTruthy()
|
|
110
|
-
})
|
|
111
|
-
|
|
112
|
-
test(
|
|
113
|
-
expect(match(`numberProperty=1234`)).toBeTruthy()
|
|
114
|
-
expect(match(`numberProperty = 1234`)).toBeTruthy()
|
|
115
|
-
expect(match(`numberProperty=1230`)).toBeFalsy()
|
|
116
|
-
expect(match(`numberProperty = 1230`)).toBeFalsy()
|
|
117
|
-
|
|
118
|
-
expect(match(`numberProperty=:val`, { val: 1234 })).toBeTruthy()
|
|
119
|
-
})
|
|
120
|
-
|
|
121
|
-
test(
|
|
122
|
-
expect(match(`numberProperty > 1233`)).toBeTruthy()
|
|
123
|
-
expect(match(`numberProperty > 1234`)).toBeFalsy()
|
|
124
|
-
})
|
|
125
|
-
|
|
126
|
-
test(
|
|
127
|
-
expect(match(`numberProperty >= 1234`)).toBeTruthy()
|
|
128
|
-
expect(match(`numberProperty >= 1235`)).toBeFalsy()
|
|
129
|
-
})
|
|
130
|
-
test(
|
|
131
|
-
expect(match(`numberProperty < 1235`)).toBeTruthy()
|
|
132
|
-
expect(match(`numberProperty < 1234`)).toBeFalsy()
|
|
133
|
-
})
|
|
134
|
-
|
|
135
|
-
test(
|
|
136
|
-
expect(match(`numberProperty <= 1235`)).toBeTruthy()
|
|
137
|
-
expect(match(`numberProperty <= 1234`)).toBeTruthy()
|
|
138
|
-
expect(match(`numberProperty <= 1233`)).toBeFalsy()
|
|
139
|
-
})
|
|
140
|
-
|
|
141
|
-
test(
|
|
142
|
-
expect(match(`numberProperty in (1233, 1234, 1235)`)).toBeTruthy()
|
|
143
|
-
})
|
|
144
|
-
|
|
145
|
-
test(
|
|
146
|
-
expect(match(`numberProperty in (1234)`)).toBeTruthy()
|
|
147
|
-
})
|
|
148
|
-
|
|
149
|
-
test(
|
|
150
|
-
expect(match(`arrayProperty contains all ("foo", "bar")`)).toBeTruthy()
|
|
108
|
+
match(`stringProperty matches ignore case :val`, { val: "fooBar" }),
|
|
109
|
+
).toBeTruthy();
|
|
110
|
+
});
|
|
111
|
+
|
|
112
|
+
test("numberProperty = 1234", async () => {
|
|
113
|
+
expect(match(`numberProperty=1234`)).toBeTruthy();
|
|
114
|
+
expect(match(`numberProperty = 1234`)).toBeTruthy();
|
|
115
|
+
expect(match(`numberProperty=1230`)).toBeFalsy();
|
|
116
|
+
expect(match(`numberProperty = 1230`)).toBeFalsy();
|
|
117
|
+
|
|
118
|
+
expect(match(`numberProperty=:val`, { val: 1234 })).toBeTruthy();
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
test("numberProperty > ...", async () => {
|
|
122
|
+
expect(match(`numberProperty > 1233`)).toBeTruthy();
|
|
123
|
+
expect(match(`numberProperty > 1234`)).toBeFalsy();
|
|
124
|
+
});
|
|
125
|
+
|
|
126
|
+
test("numberProperty >= ...", async () => {
|
|
127
|
+
expect(match(`numberProperty >= 1234`)).toBeTruthy();
|
|
128
|
+
expect(match(`numberProperty >= 1235`)).toBeFalsy();
|
|
129
|
+
});
|
|
130
|
+
test("numberProperty < ...", async () => {
|
|
131
|
+
expect(match(`numberProperty < 1235`)).toBeTruthy();
|
|
132
|
+
expect(match(`numberProperty < 1234`)).toBeFalsy();
|
|
133
|
+
});
|
|
134
|
+
|
|
135
|
+
test("numberProperty <= ...", async () => {
|
|
136
|
+
expect(match(`numberProperty <= 1235`)).toBeTruthy();
|
|
137
|
+
expect(match(`numberProperty <= 1234`)).toBeTruthy();
|
|
138
|
+
expect(match(`numberProperty <= 1233`)).toBeFalsy();
|
|
139
|
+
});
|
|
140
|
+
|
|
141
|
+
test("numberPropery in (...)", async () => {
|
|
142
|
+
expect(match(`numberProperty in (1233, 1234, 1235)`)).toBeTruthy();
|
|
143
|
+
});
|
|
144
|
+
|
|
145
|
+
test("numberPropery in (...) single value", async () => {
|
|
146
|
+
expect(match(`numberProperty in (1234)`)).toBeTruthy();
|
|
147
|
+
});
|
|
148
|
+
|
|
149
|
+
test("arrayProperty contains all (...)", async () => {
|
|
150
|
+
expect(match(`arrayProperty contains all ("foo", "bar")`)).toBeTruthy();
|
|
151
151
|
expect(
|
|
152
|
-
match(`arrayProperty contains all ("foo", "bar", "no!")`)
|
|
153
|
-
).toBeFalsy()
|
|
154
|
-
})
|
|
155
|
-
|
|
156
|
-
test(
|
|
157
|
-
expect(match(`arrayProperty is empty`)).toBeFalsy()
|
|
158
|
-
expect(match(`arrayProperty is not empty`)).toBeTruthy()
|
|
159
|
-
expect(match(`emptyArrayProperty is empty`)).toBeTruthy()
|
|
160
|
-
})
|
|
161
|
-
|
|
162
|
-
test(
|
|
163
|
-
expect(match(`notDefined is defined`)).toBeFalsy()
|
|
164
|
-
expect(match(`notDefined is not defined`)).toBeTruthy()
|
|
165
|
-
|
|
166
|
-
expect(match(`arrayProperty is defined`)).toBeTruthy()
|
|
167
|
-
expect(match(`arrayProperty is not defined`)).toBeFalsy()
|
|
168
|
-
})
|
|
169
|
-
|
|
170
|
-
test(
|
|
171
|
-
expect(match(`arrayProperty contains any ("NO!")`)).toBeFalsy()
|
|
172
|
-
expect(match(`arrayProperty contains any ("foo", "bar")`)).toBeTruthy()
|
|
152
|
+
match(`arrayProperty contains all ("foo", "bar", "no!")`),
|
|
153
|
+
).toBeFalsy();
|
|
154
|
+
});
|
|
155
|
+
|
|
156
|
+
test("arrayProperty is empty", async () => {
|
|
157
|
+
expect(match(`arrayProperty is empty`)).toBeFalsy();
|
|
158
|
+
expect(match(`arrayProperty is not empty`)).toBeTruthy();
|
|
159
|
+
expect(match(`emptyArrayProperty is empty`)).toBeTruthy();
|
|
160
|
+
});
|
|
161
|
+
|
|
162
|
+
test("property is defined", async () => {
|
|
163
|
+
expect(match(`notDefined is defined`)).toBeFalsy();
|
|
164
|
+
expect(match(`notDefined is not defined`)).toBeTruthy();
|
|
165
|
+
|
|
166
|
+
expect(match(`arrayProperty is defined`)).toBeTruthy();
|
|
167
|
+
expect(match(`arrayProperty is not defined`)).toBeFalsy();
|
|
168
|
+
});
|
|
169
|
+
|
|
170
|
+
test("arrayProperty contains any (...)", async () => {
|
|
171
|
+
expect(match(`arrayProperty contains any ("NO!")`)).toBeFalsy();
|
|
172
|
+
expect(match(`arrayProperty contains any ("foo", "bar")`)).toBeTruthy();
|
|
173
173
|
expect(
|
|
174
|
-
match(`arrayProperty contains any ("foo", "bar", "no!")`)
|
|
175
|
-
).toBeTruthy()
|
|
176
|
-
})
|
|
174
|
+
match(`arrayProperty contains any ("foo", "bar", "no!")`),
|
|
175
|
+
).toBeTruthy();
|
|
176
|
+
});
|
|
177
177
|
|
|
178
|
-
test(
|
|
179
|
-
expect(match(`nested(array(stringProperty="foo"))`)).toBeTruthy()
|
|
180
|
-
expect(match(`nested(array(stringProperty="bar"))`)).toBeTruthy()
|
|
181
|
-
expect(match(`nested(array(stringProperty="foobar"))`)).toBeFalsy()
|
|
178
|
+
test("nestedArray filters on property", async () => {
|
|
179
|
+
expect(match(`nested(array(stringProperty="foo"))`)).toBeTruthy();
|
|
180
|
+
expect(match(`nested(array(stringProperty="bar"))`)).toBeTruthy();
|
|
181
|
+
expect(match(`nested(array(stringProperty="foobar"))`)).toBeFalsy();
|
|
182
182
|
|
|
183
183
|
// One level deeper
|
|
184
184
|
expect(
|
|
185
|
-
match(`nested(array(objectProperty(stringProperty="foo")))`)
|
|
186
|
-
).toBeTruthy()
|
|
185
|
+
match(`nested(array(objectProperty(stringProperty="foo")))`),
|
|
186
|
+
).toBeTruthy();
|
|
187
187
|
expect(
|
|
188
|
-
match(`nested(array(objectProperty(stringProperty="bar")))`)
|
|
189
|
-
).toBeTruthy()
|
|
188
|
+
match(`nested(array(objectProperty(stringProperty="bar")))`),
|
|
189
|
+
).toBeTruthy();
|
|
190
190
|
expect(
|
|
191
|
-
match(`nested(array(objectProperty(stringProperty="foobar")))`)
|
|
192
|
-
).toBeFalsy()
|
|
193
|
-
})
|
|
191
|
+
match(`nested(array(objectProperty(stringProperty="foobar")))`),
|
|
192
|
+
).toBeFalsy();
|
|
193
|
+
});
|
|
194
194
|
|
|
195
|
-
test(
|
|
196
|
-
expect(match(`array(nestedArray(stringProperty="foo")))`)).toBeTruthy()
|
|
195
|
+
test("array filters on property", async () => {
|
|
196
|
+
expect(match(`array(nestedArray(stringProperty="foo")))`)).toBeTruthy();
|
|
197
197
|
expect(
|
|
198
|
-
match(`array(nestedArray(nested(stringProperty="foo"))))`)
|
|
199
|
-
).toBeTruthy()
|
|
200
|
-
})
|
|
198
|
+
match(`array(nestedArray(nested(stringProperty="foo"))))`),
|
|
199
|
+
).toBeTruthy();
|
|
200
|
+
});
|
|
201
201
|
|
|
202
|
-
test(
|
|
202
|
+
test("geolocation within circle (...)", async () => {
|
|
203
203
|
expect(
|
|
204
204
|
match(
|
|
205
|
-
`geoLocation within circle(5.121310867198959, 52.09068804569714, 2500)
|
|
206
|
-
)
|
|
207
|
-
).toBeTruthy()
|
|
205
|
+
`geoLocation within circle(5.121310867198959, 52.09068804569714, 2500)`,
|
|
206
|
+
),
|
|
207
|
+
).toBeTruthy();
|
|
208
208
|
expect(
|
|
209
209
|
match(
|
|
210
|
-
`geoLocation within circle(5.121310867198959, 52.09068804569714, 2400)
|
|
211
|
-
)
|
|
212
|
-
).toBeFalsy()
|
|
213
|
-
})
|
|
214
|
-
|
|
215
|
-
test(
|
|
216
|
-
expect(match(`numberProperty = 1234`)).toBeTruthy()
|
|
217
|
-
expect(match(`not (numberProperty = 1234)`)).toBeFalsy()
|
|
218
|
-
expect(match(`not (numberProperty = 1235)`)).toBeTruthy()
|
|
219
|
-
expect(match(`not (numberProperty = 1235)`)).toBeTruthy()
|
|
220
|
-
|
|
221
|
-
expect(match(`nested(numberProperty=1234))`)).toBeTruthy()
|
|
222
|
-
expect(match(`nested(not(numberProperty=1230)))`)).toBeTruthy()
|
|
223
|
-
expect(match(`nested(not(numberProperty=1234)))`)).toBeFalsy()
|
|
224
|
-
})
|
|
225
|
-
|
|
226
|
-
test(
|
|
210
|
+
`geoLocation within circle(5.121310867198959, 52.09068804569714, 2400)`,
|
|
211
|
+
),
|
|
212
|
+
).toBeFalsy();
|
|
213
|
+
});
|
|
214
|
+
|
|
215
|
+
test("negate any other conditional expression", async () => {
|
|
216
|
+
expect(match(`numberProperty = 1234`)).toBeTruthy();
|
|
217
|
+
expect(match(`not (numberProperty = 1234)`)).toBeFalsy();
|
|
218
|
+
expect(match(`not (numberProperty = 1235)`)).toBeTruthy();
|
|
219
|
+
expect(match(`not (numberProperty = 1235)`)).toBeTruthy();
|
|
220
|
+
|
|
221
|
+
expect(match(`nested(numberProperty=1234))`)).toBeTruthy();
|
|
222
|
+
expect(match(`nested(not(numberProperty=1230)))`)).toBeTruthy();
|
|
223
|
+
expect(match(`nested(not(numberProperty=1234)))`)).toBeFalsy();
|
|
224
|
+
});
|
|
225
|
+
|
|
226
|
+
test("and clause (implicit)", async () => {
|
|
227
227
|
expect(
|
|
228
|
-
match([`stringProperty="foobar"`, `numberProperty=1234`])
|
|
229
|
-
).toBeTruthy()
|
|
228
|
+
match([`stringProperty="foobar"`, `numberProperty=1234`]),
|
|
229
|
+
).toBeTruthy();
|
|
230
230
|
|
|
231
231
|
expect(
|
|
232
|
-
match([`stringProperty="foobar"`, `numberProperty=1111`])
|
|
233
|
-
).toBeFalsy()
|
|
234
|
-
})
|
|
232
|
+
match([`stringProperty="foobar"`, `numberProperty=1111`]),
|
|
233
|
+
).toBeFalsy();
|
|
234
|
+
});
|
|
235
235
|
|
|
236
|
-
test(
|
|
237
|
-
expect(match(`numberProperty>1233 and numberProperty<1235`)).toBeTruthy()
|
|
238
|
-
expect(match(`numberProperty>1233 and numberProperty<1234`)).toBeFalsy()
|
|
239
|
-
})
|
|
236
|
+
test("and clause (explicit)", async () => {
|
|
237
|
+
expect(match(`numberProperty>1233 and numberProperty<1235`)).toBeTruthy();
|
|
238
|
+
expect(match(`numberProperty>1233 and numberProperty<1234`)).toBeFalsy();
|
|
239
|
+
});
|
|
240
240
|
|
|
241
|
-
test(
|
|
241
|
+
test("or clause", async () => {
|
|
242
242
|
expect(
|
|
243
243
|
match(
|
|
244
|
-
`numberProperty=1231 or numberProperty>54312 or numberProperty=1234
|
|
245
|
-
)
|
|
246
|
-
).toBeTruthy()
|
|
247
|
-
expect(match(`numberProperty=1231 or numberProperty=1234`)).toBeTruthy()
|
|
248
|
-
expect(match(`numberProperty=1231 or (numberProperty=1234)`)).toBeTruthy()
|
|
249
|
-
expect(match(`numberProperty=1233 or numberProperty=1235`)).toBeFalsy()
|
|
250
|
-
})
|
|
251
|
-
|
|
252
|
-
test(
|
|
244
|
+
`numberProperty=1231 or numberProperty>54312 or numberProperty=1234`,
|
|
245
|
+
),
|
|
246
|
+
).toBeTruthy();
|
|
247
|
+
expect(match(`numberProperty=1231 or numberProperty=1234`)).toBeTruthy();
|
|
248
|
+
expect(match(`numberProperty=1231 or (numberProperty=1234)`)).toBeTruthy();
|
|
249
|
+
expect(match(`numberProperty=1233 or numberProperty=1235`)).toBeFalsy();
|
|
250
|
+
});
|
|
251
|
+
|
|
252
|
+
test("or / and clause mixed", async () => {
|
|
253
253
|
expect(
|
|
254
254
|
match(
|
|
255
|
-
`numberProperty=1234 and (numberProperty=1230 or (numberProperty=1234 or numberProperty=1235))
|
|
256
|
-
)
|
|
257
|
-
).toBeTruthy()
|
|
258
|
-
})
|
|
259
|
-
test(
|
|
255
|
+
`numberProperty=1234 and (numberProperty=1230 or (numberProperty=1234 or numberProperty=1235))`,
|
|
256
|
+
),
|
|
257
|
+
).toBeTruthy();
|
|
258
|
+
});
|
|
259
|
+
test("nested attribute access", async () => {
|
|
260
260
|
expect(
|
|
261
|
-
match(`nested(objectProperty(stringProperty="foobar"))`)
|
|
262
|
-
).toBeTruthy()
|
|
263
|
-
})
|
|
261
|
+
match(`nested(objectProperty(stringProperty="foobar"))`),
|
|
262
|
+
).toBeTruthy();
|
|
263
|
+
});
|
|
264
264
|
|
|
265
|
-
test(
|
|
266
|
-
expect(match(`nested(objectProperty(booleanProperty != true))`)).toBeFalsy()
|
|
265
|
+
test("nested attribute access", async () => {
|
|
267
266
|
expect(
|
|
268
|
-
match(`nested(objectProperty(booleanProperty !=
|
|
269
|
-
).
|
|
270
|
-
|
|
267
|
+
match(`nested(objectProperty(booleanProperty != true))`),
|
|
268
|
+
).toBeFalsy();
|
|
269
|
+
expect(
|
|
270
|
+
match(`nested(objectProperty(booleanProperty != false))`),
|
|
271
|
+
).toBeTruthy();
|
|
272
|
+
});
|
|
271
273
|
|
|
272
274
|
// TODO: disabled for now, see remark in predicateParser.ts in resolveValue
|
|
273
275
|
// test('lexer confusion', async () => {
|
|
@@ -282,17 +284,17 @@ describe('Predicate filter', () => {
|
|
|
282
284
|
// )
|
|
283
285
|
// })
|
|
284
286
|
|
|
285
|
-
test(
|
|
286
|
-
expect(() => match(`stringProperty=nomatch`)).toThrow(PredicateError)
|
|
287
|
+
test("invalid predicate", async () => {
|
|
288
|
+
expect(() => match(`stringProperty=nomatch`)).toThrow(PredicateError);
|
|
287
289
|
expect(() => match(`stringProperty=nomatch`)).toThrow(
|
|
288
|
-
"Invalid input 'n', expected input parameter or primitive value (line 1, column 16)"
|
|
289
|
-
)
|
|
290
|
-
expect(() => match(`stringProperty`)).toThrow(PredicateError)
|
|
291
|
-
})
|
|
292
|
-
})
|
|
293
|
-
|
|
294
|
-
describe(
|
|
295
|
-
test(
|
|
296
|
-
expect(() => parseQueryExpression(
|
|
297
|
-
})
|
|
298
|
-
})
|
|
290
|
+
"Invalid input 'n', expected input parameter or primitive value (line 1, column 16)",
|
|
291
|
+
);
|
|
292
|
+
expect(() => match(`stringProperty`)).toThrow(PredicateError);
|
|
293
|
+
});
|
|
294
|
+
});
|
|
295
|
+
|
|
296
|
+
describe("Report parse errors", () => {
|
|
297
|
+
test("unexpect input", () => {
|
|
298
|
+
expect(() => parseQueryExpression("foo=bar")).toThrow(PredicateError);
|
|
299
|
+
});
|
|
300
|
+
});
|