@itwin/grouping-mapping-widget 0.8.3 → 0.9.0

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 (45) hide show
  1. package/lib/cjs/test/GroupPropertyUtils.test.d.ts +2 -0
  2. package/lib/cjs/test/GroupPropertyUtils.test.js +590 -0
  3. package/lib/cjs/test/GroupPropertyUtils.test.js.map +1 -0
  4. package/lib/cjs/test/MockFactory.d.ts +9 -0
  5. package/lib/cjs/test/MockFactory.js +42 -0
  6. package/lib/cjs/test/MockFactory.js.map +1 -0
  7. package/lib/cjs/test/PropertyFieldsHelpers.d.ts +86 -0
  8. package/lib/cjs/test/PropertyFieldsHelpers.js +80 -0
  9. package/lib/cjs/test/PropertyFieldsHelpers.js.map +1 -0
  10. package/lib/cjs/test/QueryBuilder.test.js +43 -148
  11. package/lib/cjs/test/QueryBuilder.test.js.map +1 -1
  12. package/lib/cjs/test/QueryBuilder.testdata.d.ts +3 -0
  13. package/lib/cjs/test/QueryBuilder.testdata.js +843 -0
  14. package/lib/cjs/test/QueryBuilder.testdata.js.map +1 -0
  15. package/lib/cjs/test/QueryBuilderTestData.d.ts +50 -0
  16. package/lib/cjs/test/QueryBuilderTestData.js +3 -0
  17. package/lib/cjs/test/QueryBuilderTestData.js.map +1 -0
  18. package/lib/cjs/widget/components/GroupPropertyUtils.js +7 -3
  19. package/lib/cjs/widget/components/GroupPropertyUtils.js.map +1 -1
  20. package/lib/cjs/widget/components/QueryBuilder.d.ts +11 -11
  21. package/lib/cjs/widget/components/QueryBuilder.js +50 -109
  22. package/lib/cjs/widget/components/QueryBuilder.js.map +1 -1
  23. package/lib/esm/test/GroupPropertyUtils.test.d.ts +2 -0
  24. package/lib/esm/test/GroupPropertyUtils.test.js +588 -0
  25. package/lib/esm/test/GroupPropertyUtils.test.js.map +1 -0
  26. package/lib/esm/test/MockFactory.d.ts +9 -0
  27. package/lib/esm/test/MockFactory.js +19 -0
  28. package/lib/esm/test/MockFactory.js.map +1 -0
  29. package/lib/esm/test/PropertyFieldsHelpers.d.ts +86 -0
  30. package/lib/esm/test/PropertyFieldsHelpers.js +69 -0
  31. package/lib/esm/test/PropertyFieldsHelpers.js.map +1 -0
  32. package/lib/esm/test/QueryBuilder.test.js +42 -147
  33. package/lib/esm/test/QueryBuilder.test.js.map +1 -1
  34. package/lib/esm/test/QueryBuilder.testdata.d.ts +3 -0
  35. package/lib/esm/test/QueryBuilder.testdata.js +840 -0
  36. package/lib/esm/test/QueryBuilder.testdata.js.map +1 -0
  37. package/lib/esm/test/QueryBuilderTestData.d.ts +50 -0
  38. package/lib/esm/test/QueryBuilderTestData.js +2 -0
  39. package/lib/esm/test/QueryBuilderTestData.js.map +1 -0
  40. package/lib/esm/widget/components/GroupPropertyUtils.js +7 -3
  41. package/lib/esm/widget/components/GroupPropertyUtils.js.map +1 -1
  42. package/lib/esm/widget/components/QueryBuilder.d.ts +11 -11
  43. package/lib/esm/widget/components/QueryBuilder.js +50 -109
  44. package/lib/esm/widget/components/QueryBuilder.js.map +1 -1
  45. package/package.json +30 -28
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=GroupPropertyUtils.test.d.ts.map
@@ -0,0 +1,590 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const insights_client_1 = require("@itwin/insights-client");
4
+ const GroupPropertyUtils_1 = require("../widget/components/GroupPropertyUtils");
5
+ const PropertyFieldsHelpers_1 = require("./PropertyFieldsHelpers");
6
+ const chai_1 = require("chai");
7
+ const presentation_common_1 = require("@itwin/presentation-common");
8
+ describe("Group properties utilities", () => {
9
+ it("one primitive string property", () => {
10
+ const propertyFields = [PropertyFieldsHelpers_1.createTestPropertiesContentField({ properties: [{ property: PropertyFieldsHelpers_1.createTestPropertyInfo() }] })];
11
+ const result = GroupPropertyUtils_1.convertPresentationFields(propertyFields);
12
+ const expectedResult = [
13
+ {
14
+ displayLabel: "Properties Field",
15
+ sourceSchema: "*",
16
+ sourceClassName: "*",
17
+ ecPropertyTraversal: ["PropertyName"],
18
+ propertyType: insights_client_1.DataType.String,
19
+ primitiveNavigationClass: "",
20
+ actualECClassName: "SchemaName:ClassName",
21
+ parentPropertyClassName: undefined,
22
+ key: "undefined|SchemaName:ClassName|PropertyName",
23
+ categoryLabel: "Test Category",
24
+ },
25
+ ];
26
+ chai_1.assert.deepEqual(result, expectedResult);
27
+ });
28
+ it("multiple primitive properies of different types", () => {
29
+ const testProperties = [PropertyFieldsHelpers_1.createTestPropertyInfo({ name: "propString" }),
30
+ PropertyFieldsHelpers_1.createTestPropertyInfo({ name: "propInt", type: "int" }),
31
+ PropertyFieldsHelpers_1.createTestPropertyInfo({ name: "propBool", type: "boolean" }),
32
+ PropertyFieldsHelpers_1.createTestPropertyInfo({ name: "propEnum", type: "enum" }),
33
+ PropertyFieldsHelpers_1.createTestPropertyInfo({ name: "propLong", type: "long" }),
34
+ PropertyFieldsHelpers_1.createTestPropertyInfo({ name: "propNumber", type: "number" }),
35
+ ];
36
+ const propertyFields = testProperties.map((p) => PropertyFieldsHelpers_1.createTestPropertiesContentField({ properties: [{ property: p }] }));
37
+ const result = GroupPropertyUtils_1.convertPresentationFields(propertyFields);
38
+ const expectedResult = [
39
+ {
40
+ displayLabel: "Properties Field",
41
+ sourceSchema: "*",
42
+ sourceClassName: "*",
43
+ ecPropertyTraversal: ["propString"],
44
+ propertyType: insights_client_1.DataType.String,
45
+ primitiveNavigationClass: "",
46
+ actualECClassName: "SchemaName:ClassName",
47
+ parentPropertyClassName: undefined,
48
+ key: "undefined|SchemaName:ClassName|propString",
49
+ categoryLabel: "Test Category",
50
+ },
51
+ {
52
+ displayLabel: "Properties Field",
53
+ sourceSchema: "*",
54
+ sourceClassName: "*",
55
+ ecPropertyTraversal: ["propInt"],
56
+ propertyType: insights_client_1.DataType.Integer,
57
+ primitiveNavigationClass: "",
58
+ actualECClassName: "SchemaName:ClassName",
59
+ parentPropertyClassName: undefined,
60
+ key: "undefined|SchemaName:ClassName|propInt",
61
+ categoryLabel: "Test Category",
62
+ },
63
+ {
64
+ displayLabel: "Properties Field",
65
+ sourceSchema: "*",
66
+ sourceClassName: "*",
67
+ ecPropertyTraversal: ["propBool"],
68
+ propertyType: insights_client_1.DataType.Boolean,
69
+ primitiveNavigationClass: "",
70
+ actualECClassName: "SchemaName:ClassName",
71
+ parentPropertyClassName: undefined,
72
+ key: "undefined|SchemaName:ClassName|propBool",
73
+ categoryLabel: "Test Category",
74
+ },
75
+ {
76
+ displayLabel: "Properties Field",
77
+ sourceSchema: "*",
78
+ sourceClassName: "*",
79
+ ecPropertyTraversal: ["propEnum"],
80
+ propertyType: insights_client_1.DataType.Integer,
81
+ primitiveNavigationClass: "",
82
+ actualECClassName: "SchemaName:ClassName",
83
+ parentPropertyClassName: undefined,
84
+ key: "undefined|SchemaName:ClassName|propEnum",
85
+ categoryLabel: "Test Category",
86
+ },
87
+ {
88
+ displayLabel: "Properties Field",
89
+ sourceSchema: "*",
90
+ sourceClassName: "*",
91
+ ecPropertyTraversal: ["propLong"],
92
+ propertyType: insights_client_1.DataType.Integer,
93
+ primitiveNavigationClass: "",
94
+ actualECClassName: "SchemaName:ClassName",
95
+ parentPropertyClassName: undefined,
96
+ key: "undefined|SchemaName:ClassName|propLong",
97
+ categoryLabel: "Test Category",
98
+ },
99
+ {
100
+ displayLabel: "Properties Field",
101
+ sourceSchema: "*",
102
+ sourceClassName: "*",
103
+ ecPropertyTraversal: ["propNumber"],
104
+ propertyType: insights_client_1.DataType.Number,
105
+ primitiveNavigationClass: "",
106
+ actualECClassName: "SchemaName:ClassName",
107
+ parentPropertyClassName: undefined,
108
+ key: "undefined|SchemaName:ClassName|propNumber",
109
+ categoryLabel: "Test Category",
110
+ },
111
+ ];
112
+ chai_1.assert.deepEqual(result, expectedResult);
113
+ });
114
+ it("one BisCore:ElementOwnsUniqueAspect nested property", () => {
115
+ const propertiesField = PropertyFieldsHelpers_1.createTestPropertiesContentField({
116
+ properties: [{ property: PropertyFieldsHelpers_1.createTestPropertyInfo({ name: "prop1" }) }],
117
+ });
118
+ const nestedAspectField = PropertyFieldsHelpers_1.createTestNestedContentField({
119
+ nestedFields: [propertiesField],
120
+ relationshipMeaning: presentation_common_1.RelationshipMeaning.SameInstance,
121
+ pathToPrimaryClass: [
122
+ PropertyFieldsHelpers_1.createTestRelatedClassInfo({
123
+ sourceClassInfo: PropertyFieldsHelpers_1.createTestECClassInfo({ name: "Some:UniqueAspect" }),
124
+ relationshipInfo: PropertyFieldsHelpers_1.createTestECClassInfo({ name: "BisCore:ElementOwnsUniqueAspect" }),
125
+ targetClassInfo: PropertyFieldsHelpers_1.createTestECClassInfo({ name: "Schema:Class" }),
126
+ isForwardRelationship: false,
127
+ isPolymorphicRelationship: true,
128
+ }),
129
+ ],
130
+ });
131
+ const result = GroupPropertyUtils_1.convertPresentationFields([nestedAspectField]);
132
+ const expectedResult = [
133
+ {
134
+ displayLabel: "Properties Field",
135
+ sourceSchema: "SchemaName",
136
+ sourceClassName: "ClassName",
137
+ ecPropertyTraversal: ["prop1"],
138
+ propertyType: insights_client_1.DataType.String,
139
+ primitiveNavigationClass: "",
140
+ actualECClassName: "SchemaName:ClassName",
141
+ parentPropertyClassName: "SchemaName:ClassName",
142
+ key: "SchemaName:ClassName|SchemaName:ClassName|prop1",
143
+ categoryLabel: "Test Category",
144
+ },
145
+ ];
146
+ chai_1.assert.deepEqual(result, expectedResult);
147
+ });
148
+ it("one BisCore:ElementOwnsMultiAspects nested property", () => {
149
+ const propertiesField = PropertyFieldsHelpers_1.createTestPropertiesContentField({
150
+ properties: [{ property: PropertyFieldsHelpers_1.createTestPropertyInfo({ name: "prop1" }) }],
151
+ });
152
+ const nestedAspectField = PropertyFieldsHelpers_1.createTestNestedContentField({
153
+ nestedFields: [propertiesField],
154
+ relationshipMeaning: presentation_common_1.RelationshipMeaning.SameInstance,
155
+ pathToPrimaryClass: [
156
+ PropertyFieldsHelpers_1.createTestRelatedClassInfo({
157
+ sourceClassInfo: PropertyFieldsHelpers_1.createTestECClassInfo({ name: "Some:MultiAspect" }),
158
+ relationshipInfo: PropertyFieldsHelpers_1.createTestECClassInfo({ name: "BisCore:ElementOwnsMultiAspects" }),
159
+ targetClassInfo: PropertyFieldsHelpers_1.createTestECClassInfo({ name: "Schema:Class" }),
160
+ isForwardRelationship: false,
161
+ isPolymorphicRelationship: true,
162
+ }),
163
+ ],
164
+ });
165
+ const result = GroupPropertyUtils_1.convertPresentationFields([nestedAspectField]);
166
+ const expectedResult = [
167
+ {
168
+ displayLabel: "Properties Field",
169
+ sourceSchema: "SchemaName",
170
+ sourceClassName: "ClassName",
171
+ ecPropertyTraversal: ["prop1"],
172
+ propertyType: insights_client_1.DataType.String,
173
+ primitiveNavigationClass: "",
174
+ actualECClassName: "SchemaName:ClassName",
175
+ parentPropertyClassName: "SchemaName:ClassName",
176
+ key: "SchemaName:ClassName|SchemaName:ClassName|prop1",
177
+ categoryLabel: "Test Category",
178
+ },
179
+ ];
180
+ chai_1.assert.deepEqual(result, expectedResult);
181
+ });
182
+ it("one BisCore:GeometricElement3dHasTypeDefinition nested property", () => {
183
+ const propertiesField = PropertyFieldsHelpers_1.createTestPropertiesContentField({
184
+ properties: [{ property: PropertyFieldsHelpers_1.createTestPropertyInfo({ name: "prop1" }) }],
185
+ });
186
+ const nestedAspectField = PropertyFieldsHelpers_1.createTestNestedContentField({
187
+ nestedFields: [propertiesField],
188
+ relationshipMeaning: presentation_common_1.RelationshipMeaning.RelatedInstance,
189
+ pathToPrimaryClass: [
190
+ PropertyFieldsHelpers_1.createTestRelatedClassInfo({
191
+ sourceClassInfo: PropertyFieldsHelpers_1.createTestECClassInfo({ name: "Schema:SomeType" }),
192
+ relationshipInfo: PropertyFieldsHelpers_1.createTestECClassInfo({ name: "BisCore:GeometricElement3dHasTypeDefinition" }),
193
+ targetClassInfo: PropertyFieldsHelpers_1.createTestECClassInfo({ name: "Schema:Class" }),
194
+ isForwardRelationship: false,
195
+ isPolymorphicRelationship: true,
196
+ }),
197
+ ],
198
+ });
199
+ const result = GroupPropertyUtils_1.convertPresentationFields([nestedAspectField]);
200
+ const expectedResult = [
201
+ {
202
+ actualECClassName: "SchemaName:ClassName",
203
+ categoryLabel: "Test Category",
204
+ displayLabel: "Properties Field",
205
+ ecPropertyTraversal: ["TypeDefinition", "prop1"],
206
+ key: "SchemaName:ClassName|SchemaName:ClassName|TypeDefinition|prop1",
207
+ parentPropertyClassName: "SchemaName:ClassName",
208
+ primitiveNavigationClass: "",
209
+ propertyType: insights_client_1.DataType.String,
210
+ sourceClassName: "*",
211
+ sourceSchema: "*",
212
+ },
213
+ ];
214
+ chai_1.assert.deepEqual(result, expectedResult);
215
+ });
216
+ it("generate proper external source metadata", () => {
217
+ const propertyName = PropertyFieldsHelpers_1.createTestPropertyInfo({ name: "name" });
218
+ const propertyPath = PropertyFieldsHelpers_1.createTestPropertyInfo({ name: "path" });
219
+ const repositoryProperties = PropertyFieldsHelpers_1.createTestPropertiesContentField({
220
+ properties: [{ property: propertyName }, { property: propertyPath }],
221
+ });
222
+ const nestedExternalSource = PropertyFieldsHelpers_1.createTestNestedContentField({
223
+ nestedFields: [repositoryProperties],
224
+ contentClassInfo: { name: "BisCore:RepositoryLink", id: "", label: "" },
225
+ relationshipMeaning: presentation_common_1.RelationshipMeaning.SameInstance,
226
+ pathToPrimaryClass: [
227
+ PropertyFieldsHelpers_1.createTestRelatedClassInfo({
228
+ sourceClassInfo: PropertyFieldsHelpers_1.createTestECClassInfo({ name: "BisCore:ExternalSourceIsInRepository" }),
229
+ relationshipInfo: PropertyFieldsHelpers_1.createTestECClassInfo({ name: "BisCore:RepositoryLink" }),
230
+ targetClassInfo: PropertyFieldsHelpers_1.createTestECClassInfo({ name: "BisCore:ExternalSource" }),
231
+ isForwardRelationship: false,
232
+ isPolymorphicRelationship: true,
233
+ }),
234
+ PropertyFieldsHelpers_1.createTestRelatedClassInfo({
235
+ sourceClassInfo: PropertyFieldsHelpers_1.createTestECClassInfo({ name: "BisCore:ElementIsFromSource" }),
236
+ relationshipInfo: PropertyFieldsHelpers_1.createTestECClassInfo({ name: "BisCore:ExternalSource" }),
237
+ targetClassInfo: PropertyFieldsHelpers_1.createTestECClassInfo({ name: "BisCore:ExternalSourceAspect" }),
238
+ isForwardRelationship: false,
239
+ isPolymorphicRelationship: true,
240
+ }),
241
+ ],
242
+ });
243
+ const propertiesField = PropertyFieldsHelpers_1.createTestPropertiesContentField({
244
+ properties: [{ property: PropertyFieldsHelpers_1.createTestPropertyInfo({ name: "Identifier" }) }],
245
+ });
246
+ const nestedSourceAspectField = PropertyFieldsHelpers_1.createTestNestedContentField({
247
+ nestedFields: [propertiesField, nestedExternalSource],
248
+ relationshipMeaning: presentation_common_1.RelationshipMeaning.SameInstance,
249
+ pathToPrimaryClass: [
250
+ PropertyFieldsHelpers_1.createTestRelatedClassInfo({
251
+ sourceClassInfo: PropertyFieldsHelpers_1.createTestECClassInfo({ name: "BisCore:ExternalSourceAspect" }),
252
+ relationshipInfo: PropertyFieldsHelpers_1.createTestECClassInfo({ name: "BisCore:ElementOwnsMultiAspects" }),
253
+ targetClassInfo: PropertyFieldsHelpers_1.createTestECClassInfo({ name: "Schema:Class" }),
254
+ isForwardRelationship: false,
255
+ isPolymorphicRelationship: true,
256
+ }),
257
+ ],
258
+ });
259
+ const result = GroupPropertyUtils_1.convertPresentationFields([nestedSourceAspectField]);
260
+ const expectedResult = [
261
+ {
262
+ displayLabel: "Properties Field",
263
+ sourceSchema: "SchemaName",
264
+ sourceClassName: "ClassName",
265
+ ecPropertyTraversal: ["Identifier"],
266
+ propertyType: insights_client_1.DataType.String,
267
+ primitiveNavigationClass: "",
268
+ actualECClassName: "SchemaName:ClassName",
269
+ parentPropertyClassName: "SchemaName:ClassName",
270
+ key: "SchemaName:ClassName|SchemaName:ClassName|Identifier",
271
+ categoryLabel: "Test Category",
272
+ },
273
+ {
274
+ displayLabel: "Properties Field",
275
+ sourceSchema: "SchemaName",
276
+ sourceClassName: "ClassName",
277
+ ecPropertyTraversal: ["Source", "Repository", "name"],
278
+ propertyType: insights_client_1.DataType.String,
279
+ primitiveNavigationClass: "",
280
+ actualECClassName: "SchemaName:ClassName",
281
+ parentPropertyClassName: "BisCore:RepositoryLink",
282
+ key: "BisCore:RepositoryLink|SchemaName:ClassName|Source|Repository|name",
283
+ categoryLabel: "Test Category",
284
+ },
285
+ {
286
+ displayLabel: "Properties Field",
287
+ sourceSchema: "SchemaName",
288
+ sourceClassName: "ClassName",
289
+ ecPropertyTraversal: ["Source", "Repository", "path"],
290
+ propertyType: insights_client_1.DataType.String,
291
+ primitiveNavigationClass: "",
292
+ actualECClassName: "SchemaName:ClassName",
293
+ parentPropertyClassName: "BisCore:RepositoryLink",
294
+ key: "BisCore:RepositoryLink|SchemaName:ClassName|Source|Repository|path",
295
+ categoryLabel: "Test Category",
296
+ },
297
+ ];
298
+ chai_1.assert.deepEqual(result, expectedResult);
299
+ });
300
+ it("handle simple structs correctly", () => {
301
+ const structPropertyClass = PropertyFieldsHelpers_1.createTestPropertyInfo({ classInfo: { id: "0", label: "", name: "Struct:Class" } });
302
+ const structContentFieldDescription = {
303
+ valueFormat: presentation_common_1.PropertyValueFormat.Struct,
304
+ typeName: "NestedContentFieldType",
305
+ members: [{
306
+ name: "prop1",
307
+ label: "prop one",
308
+ type: {
309
+ typeName: "string",
310
+ valueFormat: presentation_common_1.PropertyValueFormat.Primitive,
311
+ },
312
+ }],
313
+ };
314
+ const simpleStructField = PropertyFieldsHelpers_1.createTestPropertiesContentField({ properties: [{ property: structPropertyClass }], type: structContentFieldDescription });
315
+ const result = GroupPropertyUtils_1.convertPresentationFields([simpleStructField]);
316
+ const expectedResult = [
317
+ {
318
+ displayLabel: "prop one",
319
+ sourceSchema: "*",
320
+ sourceClassName: "*",
321
+ ecPropertyTraversal: ["PropertyName", "prop1"],
322
+ propertyType: insights_client_1.DataType.String,
323
+ primitiveNavigationClass: "",
324
+ actualECClassName: "Struct:Class",
325
+ parentPropertyClassName: undefined,
326
+ key: "undefined|Struct:Class|PropertyName|prop1",
327
+ categoryLabel: "Test Category",
328
+ },
329
+ ];
330
+ chai_1.assert.deepEqual(result, expectedResult);
331
+ });
332
+ it("handle primitive navigation (Model)", () => {
333
+ const modelClassInfo = PropertyFieldsHelpers_1.createTestECClassInfo({ name: "BisCore:Element", label: "Element" });
334
+ const navigationClassInfo = PropertyFieldsHelpers_1.createTestECClassInfo({ name: "BisCore:ModelContainsElements", label: "ModelContainsElements" });
335
+ const navigationPropertyInfo = {
336
+ classInfo: navigationClassInfo,
337
+ isForwardRelationship: false,
338
+ // Target class does not matter
339
+ targetClassInfo: PropertyFieldsHelpers_1.createTestECClassInfo(),
340
+ isTargetPolymorphic: true,
341
+ };
342
+ const modelPropertyInfo = PropertyFieldsHelpers_1.createTestPropertyInfo({ name: "Model", classInfo: modelClassInfo, type: "long", navigationPropertyInfo });
343
+ const simpleModelField = PropertyFieldsHelpers_1.createTestPropertiesContentField({ label: "Model", properties: [{ property: modelPropertyInfo }] });
344
+ const result = GroupPropertyUtils_1.convertPresentationFields([simpleModelField]);
345
+ const expectedResult = [
346
+ {
347
+ displayLabel: "Model",
348
+ sourceSchema: "*",
349
+ sourceClassName: "*",
350
+ ecPropertyTraversal: ["Model"],
351
+ propertyType: insights_client_1.DataType.String,
352
+ primitiveNavigationClass: "BisCore:ModelContainsElements",
353
+ actualECClassName: "BisCore:Element",
354
+ parentPropertyClassName: undefined,
355
+ key: "undefined|BisCore:Element|Model",
356
+ categoryLabel: "Test Category",
357
+ },
358
+ ];
359
+ chai_1.assert.deepEqual(result, expectedResult);
360
+ });
361
+ it("convert PropertyMetaData non primitive navigation into ECProperty", () => {
362
+ const propertyMetaData = {
363
+ displayLabel: "A Property",
364
+ sourceSchema: "Schema",
365
+ sourceClassName: "Class",
366
+ ecPropertyTraversal: ["PropertyName", "SecondProperty"],
367
+ propertyType: insights_client_1.DataType.String,
368
+ primitiveNavigationClass: "",
369
+ actualECClassName: "SchemaName:ClassName",
370
+ parentPropertyClassName: undefined,
371
+ key: "undefined|SchemaName:ClassName|PropertyName",
372
+ categoryLabel: "Test Category",
373
+ };
374
+ const result = GroupPropertyUtils_1.convertToECProperties(propertyMetaData);
375
+ const expectedResult = [
376
+ {
377
+ ecSchemaName: "Schema",
378
+ ecClassName: "Class",
379
+ ecPropertyType: insights_client_1.DataType.String,
380
+ ecPropertyName: "PropertyName.SecondProperty",
381
+ },
382
+ ];
383
+ chai_1.assert.deepEqual(result, expectedResult);
384
+ });
385
+ it("convert Model PropertyMetaData primitive navigation into ECProperty", () => {
386
+ const propertyMetaData = {
387
+ displayLabel: "Model",
388
+ sourceSchema: "*",
389
+ sourceClassName: "*",
390
+ ecPropertyTraversal: [
391
+ "Model",
392
+ ],
393
+ propertyType: insights_client_1.DataType.String,
394
+ primitiveNavigationClass: "BisCore:ModelContainsElements",
395
+ actualECClassName: "BisCore:Element",
396
+ key: "undefined|BisCore:Element|Model",
397
+ categoryLabel: "Selected Item",
398
+ parentPropertyClassName: undefined,
399
+ };
400
+ const result = GroupPropertyUtils_1.convertToECProperties(propertyMetaData);
401
+ const expectedResult = [
402
+ {
403
+ ecSchemaName: "*",
404
+ ecClassName: "*",
405
+ ecPropertyType: insights_client_1.DataType.String,
406
+ ecPropertyName: "Model.ModeledElement.UserLabel",
407
+ },
408
+ {
409
+ ecSchemaName: "*",
410
+ ecClassName: "*",
411
+ ecPropertyType: insights_client_1.DataType.String,
412
+ ecPropertyName: "Model.ModeledElement.CodeValue",
413
+ },
414
+ ];
415
+ chai_1.assert.deepEqual(result, expectedResult);
416
+ });
417
+ it("convert Category PropertyMetaData primitive navigation into ECProperty", () => {
418
+ const propertyMetaData = {
419
+ displayLabel: "Category",
420
+ sourceSchema: "*",
421
+ sourceClassName: "*",
422
+ ecPropertyTraversal: [
423
+ "Category",
424
+ ],
425
+ propertyType: insights_client_1.DataType.String,
426
+ primitiveNavigationClass: "BisCore:GeometricElement3dIsInCategory",
427
+ actualECClassName: "BisCore:GeometricElement3d",
428
+ key: "undefined|BisCore:GeometricElement3d|Category",
429
+ categoryLabel: "Selected Item",
430
+ parentPropertyClassName: undefined,
431
+ };
432
+ const result = GroupPropertyUtils_1.convertToECProperties(propertyMetaData);
433
+ const expectedResult = [
434
+ {
435
+ ecSchemaName: "*",
436
+ ecClassName: "*",
437
+ ecPropertyType: insights_client_1.DataType.String,
438
+ ecPropertyName: "Category.UserLabel",
439
+ },
440
+ {
441
+ ecSchemaName: "*",
442
+ ecClassName: "*",
443
+ ecPropertyType: insights_client_1.DataType.String,
444
+ ecPropertyName: "Category.CodeValue",
445
+ },
446
+ ];
447
+ chai_1.assert.deepEqual(result, expectedResult);
448
+ });
449
+ it("convert Physical Material PropertyMetaData primitive navigation into an ECProperty", () => {
450
+ const propertyMetaData = {
451
+ displayLabel: "Physical Material",
452
+ sourceSchema: "*",
453
+ sourceClassName: "*",
454
+ ecPropertyTraversal: [
455
+ "PhysicalMaterial",
456
+ ],
457
+ propertyType: insights_client_1.DataType.String,
458
+ primitiveNavigationClass: "BisCore:PhysicalElementIsOfPhysicalMaterial",
459
+ actualECClassName: "BisCore:PhysicalElement",
460
+ key: "undefined|BisCore:PhysicalElement|PhysicalMaterial",
461
+ categoryLabel: "Selected Item",
462
+ parentPropertyClassName: undefined,
463
+ };
464
+ const result = GroupPropertyUtils_1.convertToECProperties(propertyMetaData);
465
+ const expectedResult = [
466
+ {
467
+ ecSchemaName: "*",
468
+ ecClassName: "*",
469
+ ecPropertyType: insights_client_1.DataType.String,
470
+ ecPropertyName: "PhysicalMaterial.UserLabel",
471
+ },
472
+ {
473
+ ecSchemaName: "*",
474
+ ecClassName: "*",
475
+ ecPropertyType: insights_client_1.DataType.String,
476
+ ecPropertyName: "PhysicalMaterial.CodeValue",
477
+ },
478
+ ];
479
+ chai_1.assert.deepEqual(result, expectedResult);
480
+ });
481
+ it("find properties correctly", () => {
482
+ const propertiesMetaData = [
483
+ {
484
+ displayLabel: "Properties Field",
485
+ sourceSchema: "*",
486
+ sourceClassName: "*",
487
+ ecPropertyTraversal: ["propString"],
488
+ propertyType: insights_client_1.DataType.String,
489
+ primitiveNavigationClass: "",
490
+ actualECClassName: "SchemaName:ClassName",
491
+ parentPropertyClassName: undefined,
492
+ key: "undefined|SchemaName:ClassName|propString",
493
+ categoryLabel: "Test Category",
494
+ },
495
+ {
496
+ displayLabel: "Properties Field",
497
+ sourceSchema: "*",
498
+ sourceClassName: "*",
499
+ ecPropertyTraversal: ["propInt"],
500
+ propertyType: insights_client_1.DataType.Integer,
501
+ primitiveNavigationClass: "",
502
+ actualECClassName: "SchemaName:ClassName",
503
+ parentPropertyClassName: undefined,
504
+ key: "undefined|SchemaName:ClassName|propInt",
505
+ categoryLabel: "Test Category",
506
+ },
507
+ ];
508
+ const ecProperties = [
509
+ {
510
+ ecSchemaName: "*",
511
+ ecClassName: "*",
512
+ ecPropertyType: insights_client_1.DataType.String,
513
+ ecPropertyName: "propString",
514
+ },
515
+ {
516
+ ecSchemaName: "*",
517
+ ecClassName: "*",
518
+ ecPropertyType: insights_client_1.DataType.Integer,
519
+ ecPropertyName: "propInt",
520
+ },
521
+ ];
522
+ const result = GroupPropertyUtils_1.findProperties(ecProperties, propertiesMetaData);
523
+ chai_1.assert.deepEqual(result, propertiesMetaData);
524
+ });
525
+ it("can find properties generated from a single property", () => {
526
+ const propertiesMetaData = [{
527
+ displayLabel: "Model",
528
+ sourceSchema: "*",
529
+ sourceClassName: "*",
530
+ ecPropertyTraversal: [
531
+ "Model",
532
+ ],
533
+ propertyType: insights_client_1.DataType.String,
534
+ primitiveNavigationClass: "BisCore:ModelContainsElements",
535
+ actualECClassName: "BisCore:Element",
536
+ key: "undefined|BisCore:Element|Model",
537
+ categoryLabel: "Selected Item",
538
+ parentPropertyClassName: undefined,
539
+ }];
540
+ const ecProperties = [
541
+ {
542
+ ecSchemaName: "*",
543
+ ecClassName: "*",
544
+ ecPropertyType: insights_client_1.DataType.String,
545
+ ecPropertyName: "Model.ModeledElement.UserLabel",
546
+ },
547
+ {
548
+ ecSchemaName: "*",
549
+ ecClassName: "*",
550
+ ecPropertyType: insights_client_1.DataType.String,
551
+ ecPropertyName: "Model.ModeledElement.CodeValue",
552
+ },
553
+ ];
554
+ const result = GroupPropertyUtils_1.findProperties(ecProperties, propertiesMetaData);
555
+ chai_1.assert.deepEqual(result, propertiesMetaData);
556
+ });
557
+ it("cannot find properties generated from a single property in the wrong order", () => {
558
+ const propertiesMetaData = [{
559
+ displayLabel: "Model",
560
+ sourceSchema: "*",
561
+ sourceClassName: "*",
562
+ ecPropertyTraversal: [
563
+ "Model",
564
+ ],
565
+ propertyType: insights_client_1.DataType.String,
566
+ primitiveNavigationClass: "BisCore:ModelContainsElements",
567
+ actualECClassName: "BisCore:Element",
568
+ key: "undefined|BisCore:Element|Model",
569
+ categoryLabel: "Selected Item",
570
+ parentPropertyClassName: undefined,
571
+ }];
572
+ const ecProperties = [
573
+ {
574
+ ecSchemaName: "*",
575
+ ecClassName: "*",
576
+ ecPropertyType: insights_client_1.DataType.String,
577
+ ecPropertyName: "Model.ModeledElement.CodeValue",
578
+ },
579
+ {
580
+ ecSchemaName: "*",
581
+ ecClassName: "*",
582
+ ecPropertyType: insights_client_1.DataType.String,
583
+ ecPropertyName: "Model.ModeledElement.UserLabel",
584
+ },
585
+ ];
586
+ const result = GroupPropertyUtils_1.findProperties(ecProperties, propertiesMetaData);
587
+ chai_1.expect(result).to.be.of.length(0);
588
+ });
589
+ });
590
+ //# sourceMappingURL=GroupPropertyUtils.test.js.map