@osdk/api 2.2.0-beta.15 → 2.2.0-beta.17
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/CHANGELOG.md +11 -0
- package/build/browser/Logger.js +16 -1
- package/build/browser/Logger.js.map +1 -1
- package/build/browser/OsdkBase.js.map +1 -1
- package/build/browser/OsdkObjectFrom.js.map +1 -1
- package/build/browser/OsdkObjectFrom.test.js +3 -3
- package/build/browser/OsdkObjectFrom.test.js.map +1 -1
- package/build/browser/derivedProperties/DerivedProperty.js.map +1 -1
- package/build/browser/derivedProperties/Expressions.js +2 -0
- package/build/browser/derivedProperties/Expressions.js.map +1 -0
- package/build/browser/mapping/DataValueMapping.js.map +1 -1
- package/build/browser/object/FetchPageArgs.js +1 -0
- package/build/browser/object/FetchPageArgs.js.map +1 -1
- package/build/browser/objectSet/ObjectSet.js.map +1 -1
- package/build/browser/objectSet/ObjectSet.test.js +343 -31
- package/build/browser/objectSet/ObjectSet.test.js.map +1 -1
- package/build/browser/ontology/ActionDefinition.js.map +1 -1
- package/build/browser/ontology/ObjectOrInterface.js.map +1 -1
- package/build/browser/ontology/PrimaryKeyTypes.js.map +1 -1
- package/build/browser/ontology/SimplePropertyDef.js.map +1 -1
- package/build/browser/queries/Queries.js.map +1 -1
- package/build/browser/test/EmployeeApiTest.js.map +1 -1
- package/build/cjs/{FilteredPropertyKeys-CyOYr7Je.d.cts → ObjectSet-w3HV2UGC.d.cts} +174 -50
- package/build/cjs/index.d.cts +20 -14
- package/build/cjs/public/unstable.d.cts +2 -2
- package/build/esm/Logger.js +16 -1
- package/build/esm/Logger.js.map +1 -1
- package/build/esm/OsdkBase.js.map +1 -1
- package/build/esm/OsdkObjectFrom.js.map +1 -1
- package/build/esm/OsdkObjectFrom.test.js +3 -3
- package/build/esm/OsdkObjectFrom.test.js.map +1 -1
- package/build/esm/derivedProperties/DerivedProperty.js.map +1 -1
- package/build/esm/derivedProperties/Expressions.js +2 -0
- package/build/esm/derivedProperties/Expressions.js.map +1 -0
- package/build/esm/mapping/DataValueMapping.js.map +1 -1
- package/build/esm/object/FetchPageArgs.js +1 -0
- package/build/esm/object/FetchPageArgs.js.map +1 -1
- package/build/esm/objectSet/ObjectSet.js.map +1 -1
- package/build/esm/objectSet/ObjectSet.test.js +343 -31
- package/build/esm/objectSet/ObjectSet.test.js.map +1 -1
- package/build/esm/ontology/ActionDefinition.js.map +1 -1
- package/build/esm/ontology/ObjectOrInterface.js.map +1 -1
- package/build/esm/ontology/PrimaryKeyTypes.js.map +1 -1
- package/build/esm/ontology/SimplePropertyDef.js.map +1 -1
- package/build/esm/queries/Queries.js.map +1 -1
- package/build/esm/test/EmployeeApiTest.js.map +1 -1
- package/build/types/Logger.d.ts +11 -9
- package/build/types/Logger.d.ts.map +1 -1
- package/build/types/OsdkBase.d.ts +3 -1
- package/build/types/OsdkBase.d.ts.map +1 -1
- package/build/types/OsdkObjectFrom.d.ts +2 -2
- package/build/types/OsdkObjectFrom.d.ts.map +1 -1
- package/build/types/derivedProperties/DerivedProperty.d.ts +40 -13
- package/build/types/derivedProperties/DerivedProperty.d.ts.map +1 -1
- package/build/types/derivedProperties/Expressions.d.ts +54 -0
- package/build/types/derivedProperties/Expressions.d.ts.map +1 -0
- package/build/types/mapping/DataValueMapping.d.ts +4 -0
- package/build/types/mapping/DataValueMapping.d.ts.map +1 -1
- package/build/types/object/FetchPageArgs.d.ts +36 -6
- package/build/types/object/FetchPageArgs.d.ts.map +1 -1
- package/build/types/objectSet/ObjectSet.d.ts +137 -31
- package/build/types/objectSet/ObjectSet.d.ts.map +1 -1
- package/build/types/objectSet/ObjectSet.test.d.ts +2 -1
- package/build/types/objectSet/ObjectSet.test.d.ts.map +1 -1
- package/build/types/ontology/ActionDefinition.d.ts +1 -1
- package/build/types/ontology/ActionDefinition.d.ts.map +1 -1
- package/build/types/ontology/ObjectOrInterface.d.ts +1 -4
- package/build/types/ontology/ObjectOrInterface.d.ts.map +1 -1
- package/build/types/ontology/PrimaryKeyTypes.d.ts +1 -1
- package/build/types/ontology/PrimaryKeyTypes.d.ts.map +1 -1
- package/build/types/ontology/SimplePropertyDef.d.ts +4 -4
- package/build/types/ontology/SimplePropertyDef.d.ts.map +1 -1
- package/build/types/queries/Queries.d.ts +2 -2
- package/build/types/queries/Queries.d.ts.map +1 -1
- package/build/types/test/EmployeeApiTest.d.ts +13 -5
- package/build/types/test/EmployeeApiTest.d.ts.map +1 -1
- package/package.json +3 -3
|
@@ -15,28 +15,53 @@
|
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
17
|
import { describe, expectTypeOf, it, test, vi } from "vitest";
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
export function createMockObjectSet() {
|
|
19
|
+
let fauxObject, fauxResults, fauxObjectSet;
|
|
20
|
+
|
|
21
|
+
// eslint-disable-next-line prefer-const
|
|
22
|
+
fauxObject = {
|
|
23
|
+
$link: {
|
|
24
|
+
peeps: {
|
|
25
|
+
$objectSetInternals: {
|
|
26
|
+
def: {}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
fauxResults = {
|
|
32
|
+
data: [fauxObject]
|
|
33
|
+
};
|
|
34
|
+
fauxObjectSet = {
|
|
20
35
|
where: vi.fn(() => {
|
|
21
36
|
return fauxObjectSet;
|
|
22
37
|
}),
|
|
23
38
|
withProperties: vi.fn(() => {
|
|
24
39
|
return fauxObjectSet;
|
|
25
40
|
}),
|
|
26
|
-
fetchPage: vi.fn(() => Promise.resolve(
|
|
27
|
-
|
|
28
|
-
})),
|
|
41
|
+
fetchPage: vi.fn(() => Promise.resolve(fauxResults)),
|
|
42
|
+
fetchOne: vi.fn(() => fauxObject),
|
|
29
43
|
asyncIter: vi.fn(() => {
|
|
30
44
|
return {};
|
|
31
45
|
}),
|
|
32
46
|
aggregate: vi.fn(() => {
|
|
33
47
|
return {};
|
|
48
|
+
}),
|
|
49
|
+
pivotTo: vi.fn(() => {
|
|
50
|
+
return fauxObjectSet;
|
|
34
51
|
})
|
|
35
52
|
};
|
|
53
|
+
return fauxObjectSet;
|
|
54
|
+
}
|
|
55
|
+
describe("ObjectSet", () => {
|
|
56
|
+
const fauxObjectSet = createMockObjectSet();
|
|
36
57
|
describe("normal", () => {
|
|
37
58
|
test("select none", async () => {
|
|
38
59
|
await fauxObjectSet.fetchPage();
|
|
39
60
|
expectTypeOf().toEqualTypeOf();
|
|
61
|
+
|
|
62
|
+
// Do it again but be explicit about the params to be sure
|
|
63
|
+
// we don't break them
|
|
64
|
+
await fauxObjectSet.fetchPage();
|
|
40
65
|
});
|
|
41
66
|
test("select one", async () => {
|
|
42
67
|
await fauxObjectSet.fetchPage({
|
|
@@ -45,6 +70,73 @@ describe("ObjectSet", () => {
|
|
|
45
70
|
expectTypeOf().toEqualTypeOf();
|
|
46
71
|
});
|
|
47
72
|
});
|
|
73
|
+
describe("includeAllBaseObjectProperties", () => {
|
|
74
|
+
it("has the right types if you pass true", async () => {
|
|
75
|
+
const fetchPageResult = await fauxObjectSet.where({
|
|
76
|
+
class: "idk"
|
|
77
|
+
}).fetchPage({
|
|
78
|
+
$includeAllBaseObjectProperties: true
|
|
79
|
+
});
|
|
80
|
+
expectTypeOf(fetchPageResult).toEqualTypeOf();
|
|
81
|
+
const asyncIterResult = fauxObjectSet.where({
|
|
82
|
+
class: "idk"
|
|
83
|
+
}).asyncIter({
|
|
84
|
+
$includeAllBaseObjectProperties: true
|
|
85
|
+
});
|
|
86
|
+
expectTypeOf(asyncIterResult).toEqualTypeOf();
|
|
87
|
+
});
|
|
88
|
+
it("does not let you pass partial $select and true", async () => {
|
|
89
|
+
await fauxObjectSet.where({
|
|
90
|
+
class: "idk"
|
|
91
|
+
}).fetchPage({
|
|
92
|
+
// @ts-expect-error
|
|
93
|
+
$includeAllBaseObjectProperties: true,
|
|
94
|
+
$select: ["attachment"]
|
|
95
|
+
});
|
|
96
|
+
fauxObjectSet.where({
|
|
97
|
+
class: "idk"
|
|
98
|
+
}).asyncIter({
|
|
99
|
+
// @ts-expect-error
|
|
100
|
+
$includeAllBaseObjectProperties: true,
|
|
101
|
+
$select: ["attachment"]
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
it("does let you pass full select options and false", async () => {
|
|
105
|
+
await fauxObjectSet.where({
|
|
106
|
+
class: "idk"
|
|
107
|
+
}).fetchPage({
|
|
108
|
+
$includeAllBaseObjectProperties: true,
|
|
109
|
+
// this select list is intended to represent all properties on `EmployeeApiTest`,
|
|
110
|
+
// so if you get an error here later and you added properties to that object,
|
|
111
|
+
// be sure to add them here too.
|
|
112
|
+
$select: ["attachment", "class", "employeeId", "fullName", "geopoint", "geotimeSeriesReference", "isActive", "mediaReference", "timeseries", "dateOfJoining", "hourlyRate", "yearsOfExperience", "rank", "performanceScore", "mediaReference", "lastUpdated"]
|
|
113
|
+
});
|
|
114
|
+
await fauxObjectSet.where({
|
|
115
|
+
class: "idk"
|
|
116
|
+
}).fetchPage({
|
|
117
|
+
$includeAllBaseObjectProperties: true,
|
|
118
|
+
// this select list is intended to represent all properties on `EmployeeApiTest`,
|
|
119
|
+
// so if you get an error here later and you added properties to that object,
|
|
120
|
+
// be sure to add them here too.
|
|
121
|
+
$select: ["attachment", "class", "employeeId", "fullName", "geopoint", "geotimeSeriesReference", "isActive", "mediaReference", "timeseries", "dateOfJoining", "hourlyRate", "yearsOfExperience", "rank", "performanceScore", "mediaReference", "lastUpdated"]
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
});
|
|
125
|
+
test("includeRid", async () => {
|
|
126
|
+
const x = await fauxObjectSet.where({
|
|
127
|
+
class: "idk"
|
|
128
|
+
}).fetchPage({
|
|
129
|
+
$includeRid: true
|
|
130
|
+
});
|
|
131
|
+
expectTypeOf(x).toEqualTypeOf();
|
|
132
|
+
});
|
|
133
|
+
test("pivotTo", async () => {
|
|
134
|
+
await fauxObjectSet.pivotTo("peeps").fetchPage({});
|
|
135
|
+
const subselect = await fauxObjectSet.pivotTo("peeps").fetchPage({
|
|
136
|
+
$select: ["employeeId", "class"]
|
|
137
|
+
});
|
|
138
|
+
expectTypeOf(subselect).toEqualTypeOf();
|
|
139
|
+
});
|
|
48
140
|
describe(".withProperties", () => {
|
|
49
141
|
test("single property", async () => {
|
|
50
142
|
const withA = fauxObjectSet.withProperties({
|
|
@@ -57,6 +149,13 @@ describe("ObjectSet", () => {
|
|
|
57
149
|
expectTypeOf().toEqualTypeOf();
|
|
58
150
|
expectTypeOf().toEqualTypeOf();
|
|
59
151
|
});
|
|
152
|
+
it("can be sub-selected", () => {
|
|
153
|
+
fauxObjectSet.withProperties({
|
|
154
|
+
"derivedPropertyName": base => base.pivotTo("lead").selectProperty("employeeId")
|
|
155
|
+
}).fetchOne(3, {
|
|
156
|
+
$select: ["derivedPropertyName"]
|
|
157
|
+
});
|
|
158
|
+
});
|
|
60
159
|
test("multiple properties", async () => {
|
|
61
160
|
const withFamily = fauxObjectSet.withProperties({
|
|
62
161
|
"mom": base => base.pivotTo("lead").aggregate("$count"),
|
|
@@ -117,9 +216,23 @@ describe("ObjectSet", () => {
|
|
|
117
216
|
const where = withFamily.where({
|
|
118
217
|
"mom": 1
|
|
119
218
|
});
|
|
120
|
-
await where.fetchPage();
|
|
219
|
+
const whereResults = await where.fetchPage();
|
|
220
|
+
|
|
221
|
+
// Checks that if you did an `await where.fetchPage()` that you can then
|
|
222
|
+
// pass/assign it to something explicit.
|
|
223
|
+
// Checks that if you did an `await where.fetchPage()` that you can then
|
|
224
|
+
// pass/assign it to something explicit.
|
|
225
|
+
whereResults.data[0];
|
|
226
|
+
whereResults.data[0].$link.peeps.$objectSetInternals.def; // same as above but with expectTypeOf
|
|
121
227
|
expectTypeOf().toEqualTypeOf();
|
|
122
228
|
expectTypeOf().toEqualTypeOf();
|
|
229
|
+
|
|
230
|
+
// Checks that when you directly assign, it infers correctly.
|
|
231
|
+
// Sometimes an explicit assignment can affect how typescript infers
|
|
232
|
+
// types.
|
|
233
|
+
await where.fetchPage();
|
|
234
|
+
await withFamily.fetchOne(1);
|
|
235
|
+
await withFamily.fetchOne(1);
|
|
123
236
|
});
|
|
124
237
|
it("works with .async", () => {
|
|
125
238
|
withFamily.asyncIter();
|
|
@@ -144,7 +257,7 @@ describe("ObjectSet", () => {
|
|
|
144
257
|
});
|
|
145
258
|
it("Works with selecting all non-RDP's", async () => {
|
|
146
259
|
await withFamily.fetchPage({
|
|
147
|
-
$select: ["
|
|
260
|
+
$select: ["employeeId", "fullName", "class", "attachment", "geopoint", "timeseries", "mediaReference", "geotimeSeriesReference", "isActive", "yearsOfExperience", "rank", "performanceScore", "hourlyRate", "dateOfJoining", "lastUpdated"]
|
|
148
261
|
});
|
|
149
262
|
expectTypeOf().toEqualTypeOf();
|
|
150
263
|
expectTypeOf().toEqualTypeOf();
|
|
@@ -199,28 +312,28 @@ describe("ObjectSet", () => {
|
|
|
199
312
|
// @ts-expect-error
|
|
200
313
|
base.pivotTo("lead").aggregate("geotimeSeriesReference:sum"),
|
|
201
314
|
"geotimeSeriesReferenceExactDistinct": base => base.pivotTo("lead").aggregate("geotimeSeriesReference:exactDistinct"),
|
|
202
|
-
"
|
|
203
|
-
base.pivotTo("lead").aggregate("
|
|
204
|
-
base.pivotTo("lead").aggregate("
|
|
205
|
-
base.pivotTo("lead").aggregate("
|
|
206
|
-
base.pivotTo("lead").aggregate("
|
|
207
|
-
base.pivotTo("lead").aggregate("
|
|
208
|
-
return base.pivotTo("lead").aggregate("
|
|
315
|
+
"lastUpdated": base => {
|
|
316
|
+
base.pivotTo("lead").aggregate("lastUpdated:approximateDistinct");
|
|
317
|
+
base.pivotTo("lead").aggregate("lastUpdated:exactDistinct");
|
|
318
|
+
base.pivotTo("lead").aggregate("lastUpdated:max");
|
|
319
|
+
base.pivotTo("lead").aggregate("lastUpdated:min");
|
|
320
|
+
base.pivotTo("lead").aggregate("lastUpdated:collectList");
|
|
321
|
+
return base.pivotTo("lead").aggregate("lastUpdated:collectSet");
|
|
209
322
|
},
|
|
210
|
-
"
|
|
211
|
-
base.pivotTo("lead").aggregate("
|
|
212
|
-
base.pivotTo("lead").aggregate("
|
|
213
|
-
base.pivotTo("lead").aggregate("
|
|
214
|
-
base.pivotTo("lead").aggregate("
|
|
215
|
-
base.pivotTo("lead").aggregate("
|
|
216
|
-
return base.pivotTo("lead").aggregate("
|
|
323
|
+
"dateOfJoining": base => {
|
|
324
|
+
base.pivotTo("lead").aggregate("dateOfJoining:approximateDistinct");
|
|
325
|
+
base.pivotTo("lead").aggregate("dateOfJoining:exactDistinct");
|
|
326
|
+
base.pivotTo("lead").aggregate("dateOfJoining:max");
|
|
327
|
+
base.pivotTo("lead").aggregate("dateOfJoining:min");
|
|
328
|
+
base.pivotTo("lead").aggregate("dateOfJoining:collectList");
|
|
329
|
+
return base.pivotTo("lead").aggregate("dateOfJoining:collectSet");
|
|
217
330
|
}
|
|
218
331
|
});
|
|
219
332
|
});
|
|
220
333
|
it("has correct aggregation return types", async () => {
|
|
221
334
|
const aggTestObjectSet = fauxObjectSet.withProperties({
|
|
222
|
-
"maxHasSameType": base => base.pivotTo("lead").aggregate("
|
|
223
|
-
"minHasSameType": base => base.pivotTo("lead").aggregate("
|
|
335
|
+
"maxHasSameType": base => base.pivotTo("lead").aggregate("dateOfJoining:max"),
|
|
336
|
+
"minHasSameType": base => base.pivotTo("lead").aggregate("dateOfJoining:min"),
|
|
224
337
|
"approximateDistinctNumberNoUndefined": base => base.pivotTo("lead").aggregate("employeeId:approximateDistinct"),
|
|
225
338
|
"exactDistinctNumberNoUndefined": base => base.pivotTo("lead").aggregate("employeeId:exactDistinct"),
|
|
226
339
|
"countNumberNoUndefined": base => base.pivotTo("lead").aggregate("$count"),
|
|
@@ -242,17 +355,216 @@ describe("ObjectSet", () => {
|
|
|
242
355
|
it("has correct aggregation keys", () => {
|
|
243
356
|
void fauxObjectSet.aggregate({
|
|
244
357
|
"$select": {
|
|
245
|
-
"
|
|
246
|
-
"
|
|
247
|
-
"
|
|
248
|
-
"
|
|
249
|
-
"
|
|
250
|
-
"
|
|
251
|
-
"
|
|
252
|
-
"
|
|
358
|
+
"lastUpdated:max": "asc",
|
|
359
|
+
"lastUpdated:min": "desc",
|
|
360
|
+
"lastUpdated:approximateDistinct": "asc",
|
|
361
|
+
"lastUpdated:exactDistinct": "desc",
|
|
362
|
+
"dateOfJoining:max": "desc",
|
|
363
|
+
"dateOfJoining:min": "asc",
|
|
364
|
+
"dateOfJoining:approximateDistinct": "asc",
|
|
365
|
+
"dateOfJoining:exactDistinct": "desc"
|
|
253
366
|
}
|
|
254
367
|
});
|
|
255
368
|
});
|
|
256
369
|
});
|
|
370
|
+
describe("expressions", () => {
|
|
371
|
+
"Test all property types";
|
|
372
|
+
|
|
373
|
+
describe("numeric expressions", () => {
|
|
374
|
+
it("provides correct methods off of selected numeric derived property definitions", () => {
|
|
375
|
+
fauxObjectSet.withProperties({
|
|
376
|
+
"myProp1": base => {
|
|
377
|
+
const selectedInteger = base.pivotTo("lead").selectProperty("employeeId");
|
|
378
|
+
expectTypeOf(selectedInteger).toEqualTypeOf;
|
|
379
|
+
selectedInteger.add(1);
|
|
380
|
+
selectedInteger.subtract(1);
|
|
381
|
+
selectedInteger.multiply(1);
|
|
382
|
+
selectedInteger.divide(1);
|
|
383
|
+
selectedInteger.abs();
|
|
384
|
+
selectedInteger.negate();
|
|
385
|
+
selectedInteger.max(1);
|
|
386
|
+
selectedInteger.min(1);
|
|
387
|
+
|
|
388
|
+
// @ts-expect-error
|
|
389
|
+
selectedInteger.extractPart("1");
|
|
390
|
+
expectTypeOf(base.pivotTo("lead").selectProperty("performanceScore")).toEqualTypeOf();
|
|
391
|
+
expectTypeOf(base.pivotTo("lead").selectProperty("rank")).toEqualTypeOf();
|
|
392
|
+
expectTypeOf(base.pivotTo("lead").selectProperty("yearsOfExperience")).toEqualTypeOf();
|
|
393
|
+
expectTypeOf(base.pivotTo("lead").selectProperty("hourlyRate")).toEqualTypeOf();
|
|
394
|
+
return selectedInteger;
|
|
395
|
+
}
|
|
396
|
+
});
|
|
397
|
+
});
|
|
398
|
+
it("provides correct methods off of selection definitions", () => {
|
|
399
|
+
fauxObjectSet.withProperties({
|
|
400
|
+
"myProp1": base => {
|
|
401
|
+
const selectedInteger = base.pivotTo("lead").selectProperty("employeeId");
|
|
402
|
+
expectTypeOf(selectedInteger).toEqualTypeOf;
|
|
403
|
+
selectedInteger.add(1);
|
|
404
|
+
selectedInteger.subtract(1);
|
|
405
|
+
selectedInteger.multiply(1);
|
|
406
|
+
selectedInteger.divide(1);
|
|
407
|
+
selectedInteger.abs();
|
|
408
|
+
selectedInteger.negate();
|
|
409
|
+
selectedInteger.max(1);
|
|
410
|
+
selectedInteger.min(1);
|
|
411
|
+
|
|
412
|
+
// @ts-expect-error
|
|
413
|
+
selectedInteger.extractPart("1");
|
|
414
|
+
expectTypeOf(base.pivotTo("lead").selectProperty("performanceScore")).toEqualTypeOf();
|
|
415
|
+
expectTypeOf(base.pivotTo("lead").selectProperty("rank")).toEqualTypeOf();
|
|
416
|
+
expectTypeOf(base.pivotTo("lead").selectProperty("yearsOfExperience")).toEqualTypeOf();
|
|
417
|
+
expectTypeOf(base.pivotTo("lead").selectProperty("hourlyRate")).toEqualTypeOf();
|
|
418
|
+
return selectedInteger;
|
|
419
|
+
}
|
|
420
|
+
});
|
|
421
|
+
});
|
|
422
|
+
it("provides correct methods off of aggregated properties", () => {
|
|
423
|
+
fauxObjectSet.withProperties({
|
|
424
|
+
"myProp1": base => {
|
|
425
|
+
const maxAggregation = base.pivotTo("lead").aggregate("employeeId:max");
|
|
426
|
+
expectTypeOf(maxAggregation).toEqualTypeOf;
|
|
427
|
+
maxAggregation.add(1);
|
|
428
|
+
maxAggregation.subtract(1);
|
|
429
|
+
maxAggregation.multiply(1);
|
|
430
|
+
maxAggregation.divide(1);
|
|
431
|
+
maxAggregation.abs();
|
|
432
|
+
maxAggregation.negate();
|
|
433
|
+
maxAggregation.max(1);
|
|
434
|
+
maxAggregation.min(1);
|
|
435
|
+
expectTypeOf(base.pivotTo("peeps").aggregate("employeeId:sum")).toEqualTypeOf();
|
|
436
|
+
expectTypeOf(base.pivotTo("peeps").aggregate("employeeId:avg")).toEqualTypeOf();
|
|
437
|
+
expectTypeOf(base.pivotTo("peeps").aggregate("employeeId:min")).toEqualTypeOf();
|
|
438
|
+
const collectList = base.pivotTo("peeps").aggregate("employeeId:collectList");
|
|
439
|
+
expectTypeOf(collectList).toEqualTypeOf();
|
|
440
|
+
|
|
441
|
+
// @ts-expect-error
|
|
442
|
+
collectList.plus(1);
|
|
443
|
+
expectTypeOf(base.pivotTo("peeps").aggregate("employeeId:collectList")).toEqualTypeOf();
|
|
444
|
+
return maxAggregation;
|
|
445
|
+
}
|
|
446
|
+
});
|
|
447
|
+
});
|
|
448
|
+
it("correctly coerces numeric types", () => {
|
|
449
|
+
fauxObjectSet.withProperties({
|
|
450
|
+
"myProp1": base => {
|
|
451
|
+
const intAndLong = base.pivotTo("lead").selectProperty("employeeId").add(base.selectProperty("yearsOfExperience")).add(base.selectProperty("employeeId"));
|
|
452
|
+
expectTypeOf(intAndLong).toEqualTypeOf();
|
|
453
|
+
const intAndDouble = base.pivotTo("lead").selectProperty("employeeId").add(base.selectProperty("performanceScore")).add(base.selectProperty("employeeId"));
|
|
454
|
+
expectTypeOf(intAndDouble).toEqualTypeOf();
|
|
455
|
+
const longAndDouble = base.pivotTo("lead").selectProperty("yearsOfExperience").add(base.selectProperty("performanceScore")).add(base.selectProperty("yearsOfExperience"));
|
|
456
|
+
expectTypeOf(longAndDouble).toEqualTypeOf();
|
|
457
|
+
const longAndLong = base.pivotTo("lead").selectProperty("yearsOfExperience").add(base.selectProperty("yearsOfExperience"));
|
|
458
|
+
expectTypeOf(longAndLong).toEqualTypeOf();
|
|
459
|
+
const intAndInt = base.pivotTo("lead").selectProperty("employeeId").add(base.selectProperty("employeeId"));
|
|
460
|
+
expectTypeOf(intAndInt).toEqualTypeOf();
|
|
461
|
+
const intLongDoubleChain = base.pivotTo("lead").selectProperty("employeeId").add(base.selectProperty("yearsOfExperience")).add(base.selectProperty("employeeId")).add(base.selectProperty("performanceScore")).add(base.selectProperty("employeeId"));
|
|
462
|
+
expectTypeOf(intLongDoubleChain).toEqualTypeOf();
|
|
463
|
+
const shortAndIntReturnsInt = base.pivotTo("lead").selectProperty("rank").add(base.selectProperty("employeeId"));
|
|
464
|
+
expectTypeOf(shortAndIntReturnsInt).toEqualTypeOf();
|
|
465
|
+
const shortAndFloatReturnsDouble = base.pivotTo("lead").selectProperty("rank").add(base.selectProperty("hourlyRate"));
|
|
466
|
+
expectTypeOf(shortAndFloatReturnsDouble).toEqualTypeOf();
|
|
467
|
+
return intLongDoubleChain;
|
|
468
|
+
}
|
|
469
|
+
});
|
|
470
|
+
});
|
|
471
|
+
it("allows adding number literals as a double", () => {
|
|
472
|
+
fauxObjectSet.withProperties({
|
|
473
|
+
"myProp1": base => {
|
|
474
|
+
const plus = base.pivotTo("lead").selectProperty("employeeId").add(1);
|
|
475
|
+
expectTypeOf(plus).toEqualTypeOf();
|
|
476
|
+
return plus;
|
|
477
|
+
}
|
|
478
|
+
});
|
|
479
|
+
});
|
|
480
|
+
it("allows adding literals via base.constant", () => {
|
|
481
|
+
fauxObjectSet.withProperties({
|
|
482
|
+
"myProp1": base => {
|
|
483
|
+
const plus = base.pivotTo("lead").selectProperty("employeeId").add(base.constant.double(1));
|
|
484
|
+
expectTypeOf(plus).toEqualTypeOf();
|
|
485
|
+
const intPlusIntReturnsInt = base.pivotTo("lead").selectProperty("employeeId").add(base.constant.integer(1));
|
|
486
|
+
expectTypeOf(intPlusIntReturnsInt).toEqualTypeOf();
|
|
487
|
+
return plus;
|
|
488
|
+
}
|
|
489
|
+
});
|
|
490
|
+
});
|
|
491
|
+
it("allows correctly typed nested property definitions", () => {
|
|
492
|
+
fauxObjectSet.withProperties({
|
|
493
|
+
"myProp1": base => {
|
|
494
|
+
const nested = base.pivotTo("lead").selectProperty("employeeId").add(base.pivotTo("peeps").aggregate("employeeId:sum"));
|
|
495
|
+
expectTypeOf(nested).toEqualTypeOf();
|
|
496
|
+
return nested;
|
|
497
|
+
}
|
|
498
|
+
});
|
|
499
|
+
});
|
|
500
|
+
it("allows correctly types property keys off the linked OT", () => {
|
|
501
|
+
fauxObjectSet.withProperties({
|
|
502
|
+
"myProp1": base => {
|
|
503
|
+
const nested = base.pivotTo("lead").selectProperty("employeeId").add(base.selectProperty("performanceScore"));
|
|
504
|
+
expectTypeOf(nested).toEqualTypeOf();
|
|
505
|
+
return nested;
|
|
506
|
+
}
|
|
507
|
+
});
|
|
508
|
+
});
|
|
509
|
+
|
|
510
|
+
// it("allows correctly types property keys off the base OT", () => {});
|
|
511
|
+
});
|
|
512
|
+
describe("datetime expressions", () => {
|
|
513
|
+
it("provides correct methods off of datetime selections", () => {
|
|
514
|
+
fauxObjectSet.withProperties({
|
|
515
|
+
"myProp1": base => {
|
|
516
|
+
const selectedDatetime = base.pivotTo("lead").selectProperty("dateOfJoining");
|
|
517
|
+
expectTypeOf(selectedDatetime).toEqualTypeOf();
|
|
518
|
+
selectedDatetime.max(base.selectProperty("dateOfJoining"));
|
|
519
|
+
selectedDatetime.min(base.selectProperty("lastUpdated"));
|
|
520
|
+
expectTypeOf(base.pivotTo("lead").selectProperty("lastUpdated")).toEqualTypeOf();
|
|
521
|
+
return selectedDatetime;
|
|
522
|
+
}
|
|
523
|
+
});
|
|
524
|
+
});
|
|
525
|
+
it("correctly coerces datetime types", () => {
|
|
526
|
+
fauxObjectSet.withProperties({
|
|
527
|
+
"myProp1": base => {
|
|
528
|
+
const max = base.pivotTo("lead").selectProperty("dateOfJoining").max(base.selectProperty("lastUpdated"));
|
|
529
|
+
expectTypeOf(max).toEqualTypeOf();
|
|
530
|
+
const min = base.pivotTo("lead").selectProperty("dateOfJoining").min(base.selectProperty("dateOfJoining"));
|
|
531
|
+
expectTypeOf(min).toEqualTypeOf();
|
|
532
|
+
return max;
|
|
533
|
+
}
|
|
534
|
+
});
|
|
535
|
+
});
|
|
536
|
+
it("allows adding literals via base.constant", () => {
|
|
537
|
+
fauxObjectSet.withProperties({
|
|
538
|
+
"myProp1": base => {
|
|
539
|
+
const dateAndDateReturnDate = base.pivotTo("lead").selectProperty("dateOfJoining").min(base.constant.datetime("2025-01-01T00:00:00Z"));
|
|
540
|
+
expectTypeOf(dateAndDateReturnDate).toEqualTypeOf();
|
|
541
|
+
const dateAndTimeReturnTime = base.pivotTo("lead").selectProperty("dateOfJoining").min(base.constant.timestamp("2025-01-01T00:00:00Z"));
|
|
542
|
+
expectTypeOf(dateAndTimeReturnTime).toEqualTypeOf();
|
|
543
|
+
return dateAndTimeReturnTime;
|
|
544
|
+
}
|
|
545
|
+
});
|
|
546
|
+
});
|
|
547
|
+
it("allows correctly typed nested property definitions", () => {
|
|
548
|
+
fauxObjectSet.withProperties({
|
|
549
|
+
"myProp1": base => {
|
|
550
|
+
const nested = base.pivotTo("lead").selectProperty("dateOfJoining").min(base.pivotTo("lead").pivotTo("lead").selectProperty("lastUpdated"));
|
|
551
|
+
expectTypeOf(nested).toEqualTypeOf();
|
|
552
|
+
return nested;
|
|
553
|
+
}
|
|
554
|
+
});
|
|
555
|
+
});
|
|
556
|
+
it("allows correctly typed property keys off the linked OT", () => {
|
|
557
|
+
fauxObjectSet.withProperties({
|
|
558
|
+
"myProp1": base => {
|
|
559
|
+
const nested = base.pivotTo("lead").selectProperty("dateOfJoining").min(base.selectProperty("lastUpdated"));
|
|
560
|
+
expectTypeOf(nested).toEqualTypeOf();
|
|
561
|
+
return nested;
|
|
562
|
+
}
|
|
563
|
+
});
|
|
564
|
+
});
|
|
565
|
+
|
|
566
|
+
// it("allows correctly typed property keys off the base OT", () => {});
|
|
567
|
+
});
|
|
568
|
+
});
|
|
257
569
|
});
|
|
258
570
|
//# sourceMappingURL=ObjectSet.test.js.map
|