@featurevisor/core 2.20.0 → 2.22.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.
Files changed (87) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/coverage/clover.xml +1286 -515
  3. package/coverage/coverage-final.json +17 -16
  4. package/coverage/lcov-report/builder/allocator.ts.html +1 -1
  5. package/coverage/lcov-report/builder/buildDatafile.ts.html +1 -1
  6. package/coverage/lcov-report/builder/buildScopedConditions.ts.html +1 -1
  7. package/coverage/lcov-report/builder/buildScopedDatafile.ts.html +1 -1
  8. package/coverage/lcov-report/builder/buildScopedSegments.ts.html +1 -1
  9. package/coverage/lcov-report/builder/convertToV1.ts.html +1 -1
  10. package/coverage/lcov-report/builder/getFeatureRanges.ts.html +1 -1
  11. package/coverage/lcov-report/builder/hashes.ts.html +1 -1
  12. package/coverage/lcov-report/builder/index.html +1 -1
  13. package/coverage/lcov-report/builder/mutateVariables.ts.html +1 -1
  14. package/coverage/lcov-report/builder/mutator.ts.html +1 -1
  15. package/coverage/lcov-report/builder/revision.ts.html +1 -1
  16. package/coverage/lcov-report/builder/traffic.ts.html +1 -1
  17. package/coverage/lcov-report/config/index.html +1 -1
  18. package/coverage/lcov-report/config/index.ts.html +1 -1
  19. package/coverage/lcov-report/config/projectConfig.ts.html +42 -42
  20. package/coverage/lcov-report/datasource/adapter.ts.html +2 -2
  21. package/coverage/lcov-report/datasource/datasource.ts.html +43 -43
  22. package/coverage/lcov-report/datasource/filesystemAdapter.ts.html +48 -48
  23. package/coverage/lcov-report/datasource/index.html +19 -19
  24. package/coverage/lcov-report/datasource/index.ts.html +4 -4
  25. package/coverage/lcov-report/generate-code/index.html +116 -0
  26. package/coverage/lcov-report/generate-code/typescript.ts.html +3004 -0
  27. package/coverage/lcov-report/index.html +44 -29
  28. package/coverage/lcov-report/linter/attributeSchema.ts.html +1815 -30
  29. package/coverage/lcov-report/linter/checkCircularDependency.ts.html +1 -1
  30. package/coverage/lcov-report/linter/checkPercentageExceedingSlot.ts.html +1 -1
  31. package/coverage/lcov-report/linter/conditionSchema.ts.html +1606 -157
  32. package/coverage/lcov-report/linter/featureSchema.ts.html +56 -56
  33. package/coverage/lcov-report/linter/groupSchema.ts.html +1 -1
  34. package/coverage/lcov-report/linter/index.html +39 -39
  35. package/coverage/lcov-report/linter/lintProject.ts.html +189 -78
  36. package/coverage/lcov-report/linter/mutationNotation.ts.html +1 -1
  37. package/coverage/lcov-report/linter/printError.ts.html +1 -1
  38. package/coverage/lcov-report/linter/schema.ts.html +59 -59
  39. package/coverage/lcov-report/linter/segmentSchema.ts.html +3 -3
  40. package/coverage/lcov-report/linter/testSchema.ts.html +6 -6
  41. package/coverage/lcov-report/list/index.html +1 -1
  42. package/coverage/lcov-report/list/matrix.ts.html +1 -1
  43. package/coverage/lcov-report/parsers/index.html +1 -1
  44. package/coverage/lcov-report/parsers/index.ts.html +4 -4
  45. package/coverage/lcov-report/parsers/json.ts.html +2 -2
  46. package/coverage/lcov-report/parsers/yml.ts.html +6 -6
  47. package/coverage/lcov-report/tester/cliFormat.ts.html +1 -1
  48. package/coverage/lcov-report/tester/helpers.ts.html +1 -1
  49. package/coverage/lcov-report/tester/index.html +1 -1
  50. package/coverage/lcov-report/utils/extractKeys.ts.html +1 -1
  51. package/coverage/lcov-report/utils/git.ts.html +3 -3
  52. package/coverage/lcov-report/utils/index.html +1 -1
  53. package/coverage/lcov-report/utils/index.ts.html +1 -1
  54. package/coverage/lcov-report/utils/pretty.ts.html +1 -1
  55. package/coverage/lcov.info +2624 -926
  56. package/lib/generate-code/typescript.js +57 -29
  57. package/lib/generate-code/typescript.js.map +1 -1
  58. package/lib/generate-code/typescript.spec.d.ts +1 -0
  59. package/lib/generate-code/typescript.spec.js +78 -0
  60. package/lib/generate-code/typescript.spec.js.map +1 -0
  61. package/lib/linter/attributeSchema.d.ts +352 -20
  62. package/lib/linter/attributeSchema.js +426 -16
  63. package/lib/linter/attributeSchema.js.map +1 -1
  64. package/lib/linter/attributeSchema.spec.d.ts +1 -0
  65. package/lib/linter/attributeSchema.spec.js +266 -0
  66. package/lib/linter/attributeSchema.spec.js.map +1 -0
  67. package/lib/linter/conditionSchema.d.ts +2 -1
  68. package/lib/linter/conditionSchema.js +370 -100
  69. package/lib/linter/conditionSchema.js.map +1 -1
  70. package/lib/linter/conditionSchema.spec.js +200 -153
  71. package/lib/linter/conditionSchema.spec.js.map +1 -1
  72. package/lib/linter/featureSchema.spec.js +114 -3
  73. package/lib/linter/featureSchema.spec.js.map +1 -1
  74. package/lib/linter/lintProject.js +45 -14
  75. package/lib/linter/lintProject.js.map +1 -1
  76. package/lib/linter/segmentSchema.spec.js +71 -1
  77. package/lib/linter/segmentSchema.spec.js.map +1 -1
  78. package/package.json +5 -5
  79. package/src/generate-code/typescript.spec.ts +108 -0
  80. package/src/generate-code/typescript.ts +80 -34
  81. package/src/linter/attributeSchema.spec.ts +342 -0
  82. package/src/linter/attributeSchema.ts +613 -18
  83. package/src/linter/conditionSchema.spec.ts +231 -189
  84. package/src/linter/conditionSchema.ts +582 -99
  85. package/src/linter/featureSchema.spec.ts +129 -4
  86. package/src/linter/lintProject.ts +55 -18
  87. package/src/linter/segmentSchema.spec.ts +82 -1
@@ -27,7 +27,80 @@ function minimalProjectConfig() {
27
27
  stringify: true,
28
28
  };
29
29
  }
30
- const TEST_ATTRIBUTES = ["userId", "country", "device", "email"];
30
+ const TEST_ATTRIBUTES = {
31
+ userId: {
32
+ description: "User ID",
33
+ type: "string",
34
+ },
35
+ country: {
36
+ description: "Country",
37
+ type: "string",
38
+ enum: ["de", "fr", "nl", "us"],
39
+ },
40
+ device: {
41
+ description: "Device",
42
+ type: "string",
43
+ },
44
+ email: {
45
+ description: "Email",
46
+ type: "string",
47
+ pattern: "^[^@]+@[^@]+\\.[^@]+$",
48
+ },
49
+ age: {
50
+ description: "Age",
51
+ type: "integer",
52
+ minimum: 18,
53
+ },
54
+ browser: {
55
+ description: "Browser",
56
+ type: "object",
57
+ properties: {
58
+ name: {
59
+ type: "string",
60
+ enum: ["chrome", "firefox", "safari"],
61
+ },
62
+ version: {
63
+ type: "semver",
64
+ },
65
+ },
66
+ },
67
+ account: {
68
+ description: "Account",
69
+ type: "object",
70
+ properties: {
71
+ plan: {
72
+ type: "string",
73
+ enum: ["free", "pro"],
74
+ },
75
+ locale: {
76
+ type: "string",
77
+ },
78
+ },
79
+ },
80
+ labels: {
81
+ description: "Labels",
82
+ type: "object",
83
+ additionalProperties: {
84
+ type: "string",
85
+ },
86
+ },
87
+ permissions: {
88
+ description: "Permissions",
89
+ type: "array",
90
+ items: {
91
+ type: "string",
92
+ enum: ["read", "write", "admin"],
93
+ },
94
+ },
95
+ version: {
96
+ description: "Version",
97
+ oneOf: [{ type: "string" }, { type: "double" }],
98
+ },
99
+ traits: {
100
+ description: "Traits",
101
+ type: "object",
102
+ },
103
+ };
31
104
  function getConditionsSchema() {
32
105
  return (0, conditionSchema_1.getConditionsZodSchema)(minimalProjectConfig(), TEST_ATTRIBUTES);
33
106
  }
@@ -57,7 +130,6 @@ function expectConditionsFailure(input, messageSubstring) {
57
130
  }
58
131
  return err;
59
132
  }
60
- /** Assert that an intentional mistake produces an error at the expected path with expected message. */
61
133
  function expectConditionErrorSurfaces(input, opts) {
62
134
  const err = expectConditionsFailure(input, opts.messageContains);
63
135
  const pathStrings = err.issues.map((i) => i.path.join("."));
@@ -65,116 +137,170 @@ function expectConditionErrorSurfaces(input, opts) {
65
137
  expect(hasMatchingPath).toBe(true);
66
138
  }
67
139
  describe("conditionSchema.ts :: getConditionsZodSchema", () => {
68
- describe("attribute", () => {
69
- it("accepts condition when attribute is in available list", () => {
140
+ describe("attribute path resolution", () => {
141
+ it("accepts direct attributes", () => {
142
+ expectConditionsSuccess({ attribute: "userId", operator: "equals", value: "u1" });
143
+ });
144
+ it("accepts nested attributes from declared object properties", () => {
70
145
  expectConditionsSuccess({
71
- attribute: "userId",
146
+ attribute: "browser.name",
72
147
  operator: "equals",
73
- value: "u1",
148
+ value: "chrome",
74
149
  });
75
150
  });
76
- it("rejects condition when attribute is unknown", () => {
151
+ it("accepts dynamic nested attributes via additionalProperties", () => {
152
+ expectConditionsSuccess({
153
+ attribute: "labels.locale",
154
+ operator: "equals",
155
+ value: "nl-NL",
156
+ });
157
+ });
158
+ it("accepts one-level nested attributes on flat objects", () => {
159
+ expectConditionsSuccess({
160
+ attribute: "traits.favoriteColor",
161
+ operator: "equals",
162
+ value: "blue",
163
+ });
164
+ });
165
+ it("rejects unknown attributes", () => {
77
166
  expectConditionsFailure({
78
167
  attribute: "unknownAttr",
79
168
  operator: "equals",
80
169
  value: "x",
81
170
  }, "Unknown attribute");
82
171
  });
172
+ it("rejects paths that are too deep for flat objects", () => {
173
+ expectConditionsFailure({
174
+ attribute: "traits.preferences.theme",
175
+ operator: "equals",
176
+ value: "dark",
177
+ }, "Unknown attribute");
178
+ });
83
179
  });
84
- describe("operator and value: common (equals, notEquals)", () => {
85
- it("accepts string value with equals", () => {
86
- expectConditionsSuccess({ attribute: "userId", operator: "equals", value: "u1" });
180
+ describe("operator and value validation", () => {
181
+ it("accepts schema-aware equality checks", () => {
182
+ expectConditionsSuccess({
183
+ attribute: "browser.name",
184
+ operator: "equals",
185
+ value: "firefox",
186
+ });
87
187
  });
88
- it("accepts number value with equals", () => {
89
- expectConditionsSuccess({ attribute: "userId", operator: "equals", value: 42 });
188
+ it("rejects equality values outside enum constraints", () => {
189
+ expectConditionsFailure({
190
+ attribute: "browser.name",
191
+ operator: "equals",
192
+ value: "edge",
193
+ }, 'Value does not match the schema of attribute "browser.name"');
90
194
  });
91
- it("accepts boolean value with equals", () => {
92
- expectConditionsSuccess({ attribute: "device", operator: "equals", value: true });
195
+ it("accepts number equality on numeric attributes", () => {
196
+ expectConditionsSuccess({ attribute: "age", operator: "equals", value: 42 });
93
197
  });
94
- it("accepts null value with equals", () => {
198
+ it("accepts null equality checks", () => {
95
199
  expectConditionsSuccess({ attribute: "userId", operator: "equals", value: null });
96
200
  });
97
- it("rejects array value with equals", () => {
201
+ it("rejects array values with equals", () => {
98
202
  expectConditionsFailure({ attribute: "userId", operator: "equals", value: ["a", "b"] }, "value has to be");
99
203
  });
100
- });
101
- describe("operator and value: numeric", () => {
102
- it("accepts number value with greaterThan", () => {
204
+ it("accepts numeric operators on numeric attributes", () => {
103
205
  expectConditionsSuccess({
104
- attribute: "userId",
206
+ attribute: "age",
105
207
  operator: "greaterThan",
106
- value: 10,
208
+ value: 21,
107
209
  });
108
210
  });
109
- it("rejects string value with greaterThan", () => {
110
- expectConditionsFailure({ attribute: "userId", operator: "greaterThan", value: "10" }, "value must be a number");
111
- });
112
- it("rejects missing value with lessThan", () => {
113
- const result = parseConditions({
114
- attribute: "userId",
115
- operator: "lessThan",
116
- });
117
- expect(result.success).toBe(false);
211
+ it("rejects numeric operators on string attributes", () => {
212
+ expectConditionsFailure({ attribute: "country", operator: "greaterThan", value: 10 }, "can only be used with integer or double attributes");
118
213
  });
119
- });
120
- describe("operator and value: string", () => {
121
- it("accepts string value with contains", () => {
214
+ it("accepts string operators on string-like attributes", () => {
122
215
  expectConditionsSuccess({
123
216
  attribute: "email",
124
217
  operator: "contains",
125
218
  value: "@",
126
219
  });
127
220
  });
128
- it("rejects number value with startsWith", () => {
129
- expectConditionsFailure({ attribute: "country", operator: "startsWith", value: 123 }, "value must be a string");
221
+ it("rejects string operators on array attributes", () => {
222
+ expectConditionsFailure({ attribute: "permissions", operator: "contains", value: "admin" }, "can only be used with string-like attributes");
130
223
  });
131
- });
132
- describe("operator and value: date", () => {
133
- it("accepts ISO 8601 string with before", () => {
224
+ it("accepts date operators with ISO strings", () => {
134
225
  expectConditionsSuccess({
135
- attribute: "userId",
226
+ attribute: "device",
136
227
  operator: "before",
137
228
  value: "2025-12-31T23:59:59Z",
138
229
  });
139
230
  });
140
- it("rejects non-ISO string with after", () => {
141
- expectConditionsFailure({ attribute: "userId", operator: "after", value: "not-a-date" }, "ISO 8601");
231
+ it("rejects date operators with invalid strings", () => {
232
+ expectConditionsFailure({ attribute: "device", operator: "after", value: "not-a-date" }, "ISO 8601");
142
233
  });
143
- it("rejects missing value with before", () => {
144
- expectConditionsFailure({ attribute: "userId", operator: "before" }, "value must be provided");
234
+ it("accepts semver operators on semver attributes", () => {
235
+ expectConditionsSuccess({
236
+ attribute: "browser.version",
237
+ operator: "semverEquals",
238
+ value: "1.0.0",
239
+ });
240
+ });
241
+ it("accepts semver operators on oneOf attributes when a string branch supports them", () => {
242
+ expectConditionsSuccess({
243
+ attribute: "version",
244
+ operator: "semverGreaterThan",
245
+ value: "5.0.0",
246
+ });
247
+ });
248
+ it("accepts numeric equality on oneOf attributes when a numeric branch matches", () => {
249
+ expectConditionsSuccess({
250
+ attribute: "version",
251
+ operator: "equals",
252
+ value: 5.5,
253
+ });
145
254
  });
146
255
  });
147
- describe("operator and value: array (in, notIn)", () => {
148
- it("accepts array of strings with in", () => {
256
+ describe("array-aware operators", () => {
257
+ it("accepts in/notIn on scalar attributes", () => {
149
258
  expectConditionsSuccess({
150
259
  attribute: "country",
151
260
  operator: "in",
152
261
  value: ["de", "fr", "nl"],
153
262
  });
154
263
  });
155
- it("rejects non-array value with notIn", () => {
264
+ it("rejects non-array values for in/notIn", () => {
156
265
  expectConditionsFailure({ attribute: "country", operator: "notIn", value: "de" }, "value must be an array");
157
266
  });
158
- });
159
- describe("operator and value: regex (matches, notMatches)", () => {
160
- it("accepts string value with matches", () => {
267
+ it("rejects in/notIn members that violate attribute schema", () => {
268
+ expectConditionsFailure({ attribute: "country", operator: "in", value: ["de", "unknown"] }, 'Value at index 1 does not match the schema of attribute "country"');
269
+ });
270
+ it("accepts includes for arrays with typed string items", () => {
161
271
  expectConditionsSuccess({
162
- attribute: "email",
163
- operator: "matches",
164
- value: "^[a-z]+@",
272
+ attribute: "permissions",
273
+ operator: "includes",
274
+ value: "admin",
165
275
  });
166
276
  });
277
+ it("rejects includes values outside item enum constraints", () => {
278
+ expectConditionsFailure({
279
+ attribute: "permissions",
280
+ operator: "includes",
281
+ value: "delete",
282
+ }, 'Value does not match the item schema of attribute "permissions"');
283
+ });
284
+ it("rejects non-string includes values for string arrays", () => {
285
+ expectConditionsFailure({
286
+ attribute: "permissions",
287
+ operator: "includes",
288
+ value: 42,
289
+ }, 'Value does not match the item schema of attribute "permissions"');
290
+ });
291
+ });
292
+ describe("regex flags", () => {
167
293
  it("accepts regexFlags with matches", () => {
168
294
  expectConditionsSuccess({
169
- attribute: "email",
295
+ attribute: "browser.version",
170
296
  operator: "matches",
171
- value: "hello",
297
+ value: "1\\.0\\.0",
172
298
  regexFlags: "i",
173
299
  });
174
300
  });
175
301
  it("rejects invalid regexFlags", () => {
176
302
  expectConditionsFailure({
177
- attribute: "email",
303
+ attribute: "browser.version",
178
304
  operator: "matches",
179
305
  value: "x",
180
306
  regexFlags: "invalid",
@@ -189,87 +315,49 @@ describe("conditionSchema.ts :: getConditionsZodSchema", () => {
189
315
  }, "not needed");
190
316
  });
191
317
  });
192
- describe("operator: exists, notExists (no value)", () => {
193
- it("accepts condition without value for exists", () => {
318
+ describe("exists/notExists", () => {
319
+ it("accepts exists without value", () => {
194
320
  expectConditionsSuccess({
195
321
  attribute: "userId",
196
322
  operator: "exists",
197
323
  });
198
324
  });
199
- it("rejects value when operator is exists", () => {
325
+ it("rejects exists with value", () => {
200
326
  expectConditionsFailure({ attribute: "userId", operator: "exists", value: "x" }, "value is not needed");
201
327
  });
202
328
  });
203
- describe("structure: and / or / not", () => {
204
- it("accepts and array of conditions", () => {
205
- expectConditionsSuccess({
206
- and: [
207
- { attribute: "userId", operator: "equals", value: "u1" },
208
- { attribute: "country", operator: "equals", value: "de" },
209
- ],
210
- });
211
- });
212
- it("accepts or array of conditions", () => {
213
- expectConditionsSuccess({
214
- or: [
215
- { attribute: "country", operator: "equals", value: "de" },
216
- { attribute: "country", operator: "equals", value: "fr" },
217
- ],
218
- });
219
- });
220
- it("accepts not array of conditions", () => {
221
- expectConditionsSuccess({
222
- not: [{ attribute: "country", operator: "equals", value: "us" }],
223
- });
224
- });
225
- it("accepts nested and inside or", () => {
329
+ describe("structure", () => {
330
+ it("accepts nested and/or/not conditions", () => {
226
331
  expectConditionsSuccess({
227
332
  or: [
228
333
  {
229
334
  and: [
230
- { attribute: "userId", operator: "equals", value: "u1" },
231
- { attribute: "device", operator: "equals", value: "mobile" },
335
+ { attribute: "browser.name", operator: "equals", value: "chrome" },
336
+ { attribute: "country", operator: "equals", value: "de" },
232
337
  ],
233
338
  },
234
- { attribute: "country", operator: "equals", value: "de" },
339
+ { attribute: "permissions", operator: "includes", value: "admin" },
235
340
  ],
236
341
  });
237
342
  });
238
- it("rejects unknown attribute inside nested condition", () => {
343
+ it("rejects invalid nested conditions", () => {
239
344
  expectConditionsFailure({
240
345
  and: [
241
346
  { attribute: "userId", operator: "equals", value: "u1" },
242
- { attribute: "badAttr", operator: "equals", value: "x" },
347
+ { attribute: "browser.name", operator: "equals", value: "edge" },
243
348
  ],
244
- }, "Unknown attribute");
349
+ }, 'Value does not match the schema of attribute "browser.name"');
245
350
  });
246
- it("rejects invalid value type inside nested condition", () => {
247
- expectConditionsFailure({
248
- or: [{ attribute: "country", operator: "greaterThan", value: "string" }],
249
- }, "value must be a number");
250
- });
251
- });
252
- describe("everyone (*)", () => {
253
351
  it("accepts literal * as conditions", () => {
254
352
  expectConditionsSuccess("*");
255
353
  });
256
- });
257
- describe("conditions as array", () => {
258
- it("accepts array of plain conditions", () => {
354
+ it("accepts arrays of plain conditions", () => {
259
355
  expectConditionsSuccess([
260
356
  { attribute: "userId", operator: "equals", value: "u1" },
261
357
  { attribute: "country", operator: "equals", value: "de" },
262
358
  ]);
263
359
  });
264
- it("rejects array containing invalid condition", () => {
265
- expectConditionsFailure([
266
- { attribute: "userId", operator: "equals", value: "u1" },
267
- { attribute: "unknown", operator: "equals", value: "x" },
268
- ], "Unknown attribute");
269
- });
270
- });
271
- describe("strict: no extra keys on and/or/not", () => {
272
- it("rejects and/or/not with extra key", () => {
360
+ it("rejects and/or/not objects with extra keys", () => {
273
361
  const result = parseConditions({
274
362
  and: [{ attribute: "userId", operator: "equals", value: "u1" }],
275
363
  extraKey: true,
@@ -277,56 +365,15 @@ describe("conditionSchema.ts :: getConditionsZodSchema", () => {
277
365
  expect(result.success).toBe(false);
278
366
  });
279
367
  });
280
- describe("operator enum", () => {
281
- it("rejects unknown operator", () => {
282
- const result = parseConditions({
283
- attribute: "userId",
284
- operator: "unknownOp",
285
- value: "x",
286
- });
287
- expect(result.success).toBe(false);
288
- });
289
- it("accepts all common and numeric operators", () => {
290
- expectConditionsSuccess({ attribute: "userId", operator: "notEquals", value: "x" });
291
- expectConditionsSuccess({ attribute: "userId", operator: "greaterThanOrEquals", value: 0 });
292
- expectConditionsSuccess({ attribute: "userId", operator: "lessThanOrEquals", value: 100 });
293
- });
294
- it("accepts semver operators with string value", () => {
295
- expectConditionsSuccess({
296
- attribute: "userId",
297
- operator: "semverEquals",
298
- value: "1.0.0",
299
- });
300
- });
301
- });
302
- describe("errors surface properly: intentional mistakes produce correct path and message", () => {
303
- it("unknown attribute: error path includes attribute, message says Unknown attribute", () => {
368
+ describe("error surfacing", () => {
369
+ it("reports unknown attributes at the attribute path", () => {
304
370
  expectConditionErrorSurfaces({ attribute: "typoAttr", operator: "equals", value: "x" }, { pathContains: ["attribute"], messageContains: "Unknown attribute" });
305
371
  });
306
- it("numeric operator with string value: error path points to value, message says number", () => {
307
- expectConditionErrorSurfaces({ attribute: "userId", operator: "greaterThan", value: "10" }, { pathContains: ["value"], messageContains: "number" });
308
- });
309
- it("date operator with invalid string: error path points to value, message mentions ISO", () => {
310
- expectConditionErrorSurfaces({ attribute: "userId", operator: "before", value: "not-a-date" }, { pathContains: ["value"], messageContains: "ISO" });
311
- });
312
- it("exists operator with value set: error path points to value, message says not needed", () => {
313
- expectConditionErrorSurfaces({ attribute: "userId", operator: "exists", value: "x" }, { pathContains: ["value"], messageContains: "not needed" });
314
- });
315
- it("regexFlags when operator is not matches: error path points to regexFlags", () => {
316
- expectConditionErrorSurfaces({
317
- attribute: "userId",
318
- operator: "equals",
319
- value: "u1",
320
- regexFlags: "i",
321
- }, { pathContains: ["regexFlags"], messageContains: "not needed" });
372
+ it("reports schema mismatches at the value path", () => {
373
+ expectConditionErrorSurfaces({ attribute: "browser.name", operator: "equals", value: "edge" }, { pathContains: ["value"], messageContains: "Value does not match the schema" });
322
374
  });
323
- it("nested condition with unknown attribute: error path goes into and.*.attribute", () => {
324
- expectConditionErrorSurfaces({
325
- and: [
326
- { attribute: "userId", operator: "equals", value: "u1" },
327
- { attribute: "badAttr", operator: "equals", value: "x" },
328
- ],
329
- }, { pathContains: ["attribute"], messageContains: "Unknown attribute" });
375
+ it("reports array item schema mismatches at the value path", () => {
376
+ expectConditionErrorSurfaces({ attribute: "country", operator: "in", value: ["de", "edge"] }, { pathContains: ["value"], messageContains: "Value at index 1 does not match" });
330
377
  });
331
378
  });
332
379
  });
@@ -1 +1 @@
1
- {"version":3,"file":"conditionSchema.spec.js","sourceRoot":"","sources":["../../src/linter/conditionSchema.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"conditionSchema.spec.js","sourceRoot":"","sources":["../../src/linter/conditionSchema.spec.ts"],"names":[],"mappings":"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"}