@osdk/client 2.6.0-beta.2 → 2.6.0-beta.3
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 +13 -0
- package/build/browser/object/formatting/applyPropertyFormatter.js +7 -1
- package/build/browser/object/formatting/applyPropertyFormatter.js.map +1 -1
- package/build/browser/object/formatting/applyPropertyFormatter.test.js +305 -2
- package/build/browser/object/formatting/applyPropertyFormatter.test.js.map +1 -1
- package/build/browser/object/formatting/formatDateTime.js +158 -0
- package/build/browser/object/formatting/formatDateTime.js.map +1 -0
- package/build/browser/util/UserAgent.js +2 -2
- package/build/cjs/{chunk-X7WMWKLM.cjs → chunk-BRYZR53E.cjs} +142 -5
- package/build/cjs/chunk-BRYZR53E.cjs.map +1 -0
- package/build/cjs/index.cjs +7 -7
- package/build/cjs/public/unstable-do-not-use.cjs +6 -6
- package/build/esm/object/formatting/applyPropertyFormatter.js +7 -1
- package/build/esm/object/formatting/applyPropertyFormatter.js.map +1 -1
- package/build/esm/object/formatting/applyPropertyFormatter.test.js +305 -2
- package/build/esm/object/formatting/applyPropertyFormatter.test.js.map +1 -1
- package/build/esm/object/formatting/formatDateTime.js +158 -0
- package/build/esm/object/formatting/formatDateTime.js.map +1 -0
- package/build/esm/util/UserAgent.js +2 -2
- package/build/types/object/formatting/applyPropertyFormatter.d.ts.map +1 -1
- package/build/types/object/formatting/formatDateTime.d.ts +6 -0
- package/build/types/object/formatting/formatDateTime.d.ts.map +1 -0
- package/package.json +6 -6
- package/build/cjs/chunk-X7WMWKLM.cjs.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# @osdk/client
|
|
2
2
|
|
|
3
|
+
## 2.6.0-beta.3
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 831a285: Added relative time formatting
|
|
8
|
+
- 3fa28d4: Add support for date and time formatting
|
|
9
|
+
|
|
10
|
+
### Patch Changes
|
|
11
|
+
|
|
12
|
+
- @osdk/api@2.6.0-beta.3
|
|
13
|
+
- @osdk/client.unstable@2.6.0-beta.3
|
|
14
|
+
- @osdk/generator-converters@2.6.0-beta.3
|
|
15
|
+
|
|
3
16
|
## 2.6.0-beta.2
|
|
4
17
|
|
|
5
18
|
### Minor Changes
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
17
|
import { formatBoolean } from "./formatBoolean.js";
|
|
18
|
+
import { formatDateTime } from "./formatDateTime.js";
|
|
18
19
|
import { formatNumber } from "./formatNumber.js";
|
|
19
20
|
import { getBrowserLocale } from "./propertyFormattingUtils.js";
|
|
20
21
|
/**
|
|
@@ -44,7 +45,12 @@ function formatPropertyValue(value, rule, objectData, options) {
|
|
|
44
45
|
return undefined;
|
|
45
46
|
}
|
|
46
47
|
return formatNumber(value, rule.numberType, objectData, options.locale ?? getBrowserLocale());
|
|
47
|
-
|
|
48
|
+
case "date":
|
|
49
|
+
case "timestamp":
|
|
50
|
+
if (typeof value !== "string") {
|
|
51
|
+
return undefined;
|
|
52
|
+
}
|
|
53
|
+
return formatDateTime(new Date(value), rule.format, rule.type === "timestamp" ? rule.displayTimezone : undefined, objectData, options.locale ?? getBrowserLocale(), options.timezoneId);
|
|
48
54
|
default:
|
|
49
55
|
return undefined;
|
|
50
56
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"applyPropertyFormatter.js","names":["formatBoolean","formatNumber","getBrowserLocale","applyPropertyFormatter","propertyValue","propertyDefinition","objectData","options","valueFormatting","undefined","formatPropertyValue","value","rule","type","numberType","locale"],"sources":["applyPropertyFormatter.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { ObjectMetadata, PropertyValueFormattingRule } from \"@osdk/api\";\nimport type { SimpleOsdkProperties } from \"../SimpleOsdkProperties.js\";\nimport { formatBoolean } from \"./formatBoolean.js\";\nimport { formatNumber } from \"./formatNumber.js\";\nimport { getBrowserLocale } from \"./propertyFormattingUtils.js\";\n\nexport interface FormatPropertyOptions {\n locale?: string;\n timezoneId?: string;\n}\n\ntype PropertyValue =\n | string\n | Array<string>\n | number\n | Array<number>\n | boolean\n | Array<boolean>\n | undefined;\n\ntype DefinedPropertyValue = NonNullable<PropertyValue>;\n\n/**\n * Applies formatting rules to a property value and returns the formatted string value.\n *\n * @param propertyValue - The value of the property to format\n * @returns The formatted string value, or undefined if the property cannot be formatted\n *\n * @experimental This is a stub implementation that returns undefined.\n * The actual formatting logic will be implemented later.\n */\nexport function applyPropertyFormatter(\n propertyValue: PropertyValue,\n propertyDefinition: ObjectMetadata.Property | undefined,\n objectData: SimpleOsdkProperties,\n options: FormatPropertyOptions = {},\n): string | undefined {\n if (propertyDefinition?.valueFormatting == null || propertyValue == null) {\n return undefined;\n }\n return formatPropertyValue(\n propertyValue,\n propertyDefinition.valueFormatting,\n objectData,\n options,\n );\n}\n\nfunction formatPropertyValue(\n value: DefinedPropertyValue,\n rule: PropertyValueFormattingRule,\n objectData: SimpleOsdkProperties,\n options: FormatPropertyOptions,\n): string | undefined {\n switch (rule.type) {\n case \"boolean\":\n if (typeof value !== \"boolean\") {\n return undefined;\n }\n return formatBoolean(value, rule);\n case \"number\":\n if (typeof value !== \"number\") {\n return undefined;\n }\n return formatNumber(\n value,\n rule.numberType,\n objectData,\n options.locale ?? getBrowserLocale(),\n );\n
|
|
1
|
+
{"version":3,"file":"applyPropertyFormatter.js","names":["formatBoolean","formatDateTime","formatNumber","getBrowserLocale","applyPropertyFormatter","propertyValue","propertyDefinition","objectData","options","valueFormatting","undefined","formatPropertyValue","value","rule","type","numberType","locale","Date","format","displayTimezone","timezoneId"],"sources":["applyPropertyFormatter.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { ObjectMetadata, PropertyValueFormattingRule } from \"@osdk/api\";\nimport type { SimpleOsdkProperties } from \"../SimpleOsdkProperties.js\";\nimport { formatBoolean } from \"./formatBoolean.js\";\nimport { formatDateTime } from \"./formatDateTime.js\";\nimport { formatNumber } from \"./formatNumber.js\";\nimport { getBrowserLocale } from \"./propertyFormattingUtils.js\";\n\nexport interface FormatPropertyOptions {\n locale?: string;\n timezoneId?: string;\n}\n\ntype PropertyValue =\n | string\n | Array<string>\n | number\n | Array<number>\n | boolean\n | Array<boolean>\n | undefined;\n\ntype DefinedPropertyValue = NonNullable<PropertyValue>;\n\n/**\n * Applies formatting rules to a property value and returns the formatted string value.\n *\n * @param propertyValue - The value of the property to format\n * @returns The formatted string value, or undefined if the property cannot be formatted\n *\n * @experimental This is a stub implementation that returns undefined.\n * The actual formatting logic will be implemented later.\n */\nexport function applyPropertyFormatter(\n propertyValue: PropertyValue,\n propertyDefinition: ObjectMetadata.Property | undefined,\n objectData: SimpleOsdkProperties,\n options: FormatPropertyOptions = {},\n): string | undefined {\n if (propertyDefinition?.valueFormatting == null || propertyValue == null) {\n return undefined;\n }\n return formatPropertyValue(\n propertyValue,\n propertyDefinition.valueFormatting,\n objectData,\n options,\n );\n}\n\nfunction formatPropertyValue(\n value: DefinedPropertyValue,\n rule: PropertyValueFormattingRule,\n objectData: SimpleOsdkProperties,\n options: FormatPropertyOptions,\n): string | undefined {\n switch (rule.type) {\n case \"boolean\":\n if (typeof value !== \"boolean\") {\n return undefined;\n }\n return formatBoolean(value, rule);\n case \"number\":\n if (typeof value !== \"number\") {\n return undefined;\n }\n return formatNumber(\n value,\n rule.numberType,\n objectData,\n options.locale ?? getBrowserLocale(),\n );\n case \"date\":\n case \"timestamp\":\n if (typeof value !== \"string\") {\n return undefined;\n }\n return formatDateTime(\n new Date(value),\n rule.format,\n rule.type === \"timestamp\" ? rule.displayTimezone : undefined,\n objectData,\n options.locale ?? getBrowserLocale(),\n options.timezoneId,\n );\n default:\n return undefined;\n }\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAIA,SAASA,aAAa,QAAQ,oBAAoB;AAClD,SAASC,cAAc,QAAQ,qBAAqB;AACpD,SAASC,YAAY,QAAQ,mBAAmB;AAChD,SAASC,gBAAgB,QAAQ,8BAA8B;AAkB/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,sBAAsBA,CACpCC,aAA4B,EAC5BC,kBAAuD,EACvDC,UAAgC,EAChCC,OAA8B,GAAG,CAAC,CAAC,EACf;EACpB,IAAIF,kBAAkB,EAAEG,eAAe,IAAI,IAAI,IAAIJ,aAAa,IAAI,IAAI,EAAE;IACxE,OAAOK,SAAS;EAClB;EACA,OAAOC,mBAAmB,CACxBN,aAAa,EACbC,kBAAkB,CAACG,eAAe,EAClCF,UAAU,EACVC,OACF,CAAC;AACH;AAEA,SAASG,mBAAmBA,CAC1BC,KAA2B,EAC3BC,IAAiC,EACjCN,UAAgC,EAChCC,OAA8B,EACV;EACpB,QAAQK,IAAI,CAACC,IAAI;IACf,KAAK,SAAS;MACZ,IAAI,OAAOF,KAAK,KAAK,SAAS,EAAE;QAC9B,OAAOF,SAAS;MAClB;MACA,OAAOV,aAAa,CAACY,KAAK,EAAEC,IAAI,CAAC;IACnC,KAAK,QAAQ;MACX,IAAI,OAAOD,KAAK,KAAK,QAAQ,EAAE;QAC7B,OAAOF,SAAS;MAClB;MACA,OAAOR,YAAY,CACjBU,KAAK,EACLC,IAAI,CAACE,UAAU,EACfR,UAAU,EACVC,OAAO,CAACQ,MAAM,IAAIb,gBAAgB,CAAC,CACrC,CAAC;IACH,KAAK,MAAM;IACX,KAAK,WAAW;MACd,IAAI,OAAOS,KAAK,KAAK,QAAQ,EAAE;QAC7B,OAAOF,SAAS;MAClB;MACA,OAAOT,cAAc,CACnB,IAAIgB,IAAI,CAACL,KAAK,CAAC,EACfC,IAAI,CAACK,MAAM,EACXL,IAAI,CAACC,IAAI,KAAK,WAAW,GAAGD,IAAI,CAACM,eAAe,GAAGT,SAAS,EAC5DH,UAAU,EACVC,OAAO,CAACQ,MAAM,IAAIb,gBAAgB,CAAC,CAAC,EACpCK,OAAO,CAACY,UACV,CAAC;IACH;MACE,OAAOV,SAAS;EACpB;AACF","ignoreList":[]}
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
-
import { describe, expect, it } from "vitest";
|
|
17
|
+
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
|
|
18
18
|
import { InterfaceDefinitions } from "../../ontology/OntologyProvider.js";
|
|
19
19
|
import { createOsdkObject } from "../convertWireToOsdkObjects/createOsdkObject.js";
|
|
20
20
|
describe("getFormattedValue", () => {
|
|
@@ -28,6 +28,10 @@ describe("getFormattedValue", () => {
|
|
|
28
28
|
const FR_FR = {
|
|
29
29
|
locale: "fr-FR"
|
|
30
30
|
};
|
|
31
|
+
const EN_US_TOKYO = {
|
|
32
|
+
locale: "en-US",
|
|
33
|
+
timezoneId: "Asia/Tokyo"
|
|
34
|
+
};
|
|
31
35
|
|
|
32
36
|
// Single object definition with properties for testing
|
|
33
37
|
const OBJECT_DEF = {
|
|
@@ -298,6 +302,156 @@ describe("getFormattedValue", () => {
|
|
|
298
302
|
type: "string",
|
|
299
303
|
nullable: true,
|
|
300
304
|
multiplicity: false
|
|
305
|
+
},
|
|
306
|
+
createdDate: {
|
|
307
|
+
type: "datetime",
|
|
308
|
+
nullable: false,
|
|
309
|
+
multiplicity: false,
|
|
310
|
+
valueFormatting: {
|
|
311
|
+
type: "date",
|
|
312
|
+
format: {
|
|
313
|
+
type: "localizedFormat",
|
|
314
|
+
format: "DATE_FORMAT_DATE"
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
},
|
|
318
|
+
createdDateTime: {
|
|
319
|
+
type: "datetime",
|
|
320
|
+
nullable: false,
|
|
321
|
+
multiplicity: false,
|
|
322
|
+
valueFormatting: {
|
|
323
|
+
type: "timestamp",
|
|
324
|
+
format: {
|
|
325
|
+
type: "localizedFormat",
|
|
326
|
+
format: "DATE_FORMAT_DATE_TIME"
|
|
327
|
+
},
|
|
328
|
+
displayTimezone: {
|
|
329
|
+
type: "static",
|
|
330
|
+
zoneId: {
|
|
331
|
+
type: "constant",
|
|
332
|
+
value: "America/New_York"
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
},
|
|
337
|
+
createdDateTimeShort: {
|
|
338
|
+
type: "datetime",
|
|
339
|
+
nullable: false,
|
|
340
|
+
multiplicity: false,
|
|
341
|
+
valueFormatting: {
|
|
342
|
+
type: "timestamp",
|
|
343
|
+
format: {
|
|
344
|
+
type: "localizedFormat",
|
|
345
|
+
format: "DATE_FORMAT_DATE_TIME_SHORT"
|
|
346
|
+
},
|
|
347
|
+
displayTimezone: {
|
|
348
|
+
type: "static",
|
|
349
|
+
zoneId: {
|
|
350
|
+
type: "constant",
|
|
351
|
+
value: "America/Los_Angeles"
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
},
|
|
356
|
+
createdTime: {
|
|
357
|
+
type: "datetime",
|
|
358
|
+
nullable: false,
|
|
359
|
+
multiplicity: false,
|
|
360
|
+
valueFormatting: {
|
|
361
|
+
type: "timestamp",
|
|
362
|
+
format: {
|
|
363
|
+
type: "localizedFormat",
|
|
364
|
+
format: "DATE_FORMAT_TIME"
|
|
365
|
+
},
|
|
366
|
+
displayTimezone: {
|
|
367
|
+
type: "static",
|
|
368
|
+
zoneId: {
|
|
369
|
+
type: "constant",
|
|
370
|
+
value: "UTC"
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
},
|
|
375
|
+
yearMonth: {
|
|
376
|
+
type: "datetime",
|
|
377
|
+
nullable: false,
|
|
378
|
+
multiplicity: false,
|
|
379
|
+
valueFormatting: {
|
|
380
|
+
type: "date",
|
|
381
|
+
format: {
|
|
382
|
+
type: "localizedFormat",
|
|
383
|
+
format: "DATE_FORMAT_YEAR_AND_MONTH"
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
},
|
|
387
|
+
isoInstant: {
|
|
388
|
+
type: "datetime",
|
|
389
|
+
nullable: false,
|
|
390
|
+
multiplicity: false,
|
|
391
|
+
valueFormatting: {
|
|
392
|
+
type: "timestamp",
|
|
393
|
+
format: {
|
|
394
|
+
type: "localizedFormat",
|
|
395
|
+
format: "DATE_FORMAT_ISO_INSTANT"
|
|
396
|
+
},
|
|
397
|
+
displayTimezone: {
|
|
398
|
+
type: "user"
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
},
|
|
402
|
+
timestampWithUserTimezone: {
|
|
403
|
+
type: "datetime",
|
|
404
|
+
nullable: false,
|
|
405
|
+
multiplicity: false,
|
|
406
|
+
valueFormatting: {
|
|
407
|
+
type: "timestamp",
|
|
408
|
+
format: {
|
|
409
|
+
type: "localizedFormat",
|
|
410
|
+
format: "DATE_FORMAT_DATE_TIME"
|
|
411
|
+
},
|
|
412
|
+
displayTimezone: {
|
|
413
|
+
type: "user"
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
},
|
|
417
|
+
timestampWithDynamicTimezone: {
|
|
418
|
+
type: "datetime",
|
|
419
|
+
nullable: false,
|
|
420
|
+
multiplicity: false,
|
|
421
|
+
valueFormatting: {
|
|
422
|
+
type: "timestamp",
|
|
423
|
+
format: {
|
|
424
|
+
type: "localizedFormat",
|
|
425
|
+
format: "DATE_FORMAT_DATE_TIME"
|
|
426
|
+
},
|
|
427
|
+
displayTimezone: {
|
|
428
|
+
type: "static",
|
|
429
|
+
zoneId: {
|
|
430
|
+
type: "propertyType",
|
|
431
|
+
propertyApiName: "timezoneId"
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
},
|
|
436
|
+
timezoneId: {
|
|
437
|
+
type: "string",
|
|
438
|
+
nullable: true,
|
|
439
|
+
multiplicity: false
|
|
440
|
+
},
|
|
441
|
+
relativeDateTime: {
|
|
442
|
+
type: "datetime",
|
|
443
|
+
nullable: false,
|
|
444
|
+
multiplicity: false,
|
|
445
|
+
valueFormatting: {
|
|
446
|
+
type: "timestamp",
|
|
447
|
+
format: {
|
|
448
|
+
type: "localizedFormat",
|
|
449
|
+
format: "DATE_FORMAT_RELATIVE_TO_NOW"
|
|
450
|
+
},
|
|
451
|
+
displayTimezone: {
|
|
452
|
+
type: "user"
|
|
453
|
+
}
|
|
454
|
+
}
|
|
301
455
|
}
|
|
302
456
|
}
|
|
303
457
|
};
|
|
@@ -324,7 +478,17 @@ describe("getFormattedValue", () => {
|
|
|
324
478
|
billionsNumber: 3000000000,
|
|
325
479
|
percentage: 0.125,
|
|
326
480
|
basisPoints: 0.125,
|
|
327
|
-
currencyCode: "EUR"
|
|
481
|
+
currencyCode: "EUR",
|
|
482
|
+
createdDate: "2025-01-15T14:30:00.000Z",
|
|
483
|
+
createdDateTime: "2025-01-15T14:30:00.000Z",
|
|
484
|
+
createdDateTimeShort: "2025-01-15T14:30:00.000Z",
|
|
485
|
+
createdTime: "2025-01-15T14:30:00.000Z",
|
|
486
|
+
yearMonth: "2025-01-15T00:00:00.000Z",
|
|
487
|
+
isoInstant: "2025-01-15T14:30:00.000Z",
|
|
488
|
+
timestampWithUserTimezone: "2025-01-15T14:30:00.000Z",
|
|
489
|
+
timestampWithDynamicTimezone: "2025-01-15T14:30:00.000Z",
|
|
490
|
+
relativeDateTime: "2025-01-15T14:30:00.000Z",
|
|
491
|
+
timezoneId: "Europe/London"
|
|
328
492
|
};
|
|
329
493
|
|
|
330
494
|
// Helper to create an OSDK object with optional data overrides
|
|
@@ -419,5 +583,144 @@ describe("getFormattedValue", () => {
|
|
|
419
583
|
expect(obj.$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue("basisPoints", EN_US)).toBe("1,250 bps");
|
|
420
584
|
});
|
|
421
585
|
});
|
|
586
|
+
describe("Date and time formatting", () => {
|
|
587
|
+
it("formats date without timezone", () => {
|
|
588
|
+
const obj = getObject();
|
|
589
|
+
const formatted = obj.$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue("createdDate", EN_US);
|
|
590
|
+
expect(formatted).toBe("Wed, Jan 15, 2025");
|
|
591
|
+
});
|
|
592
|
+
it("formats date in different locale", () => {
|
|
593
|
+
const obj = getObject();
|
|
594
|
+
const formatted = obj.$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue("createdDate", DE_DE);
|
|
595
|
+
expect(formatted).toBe("Mi., 15. Jan. 2025");
|
|
596
|
+
});
|
|
597
|
+
it("formats timestamp with static timezone (America/New_York)", () => {
|
|
598
|
+
const obj = getObject();
|
|
599
|
+
const formatted = obj.$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue("createdDateTime", EN_US);
|
|
600
|
+
|
|
601
|
+
// Should show time in EST (UTC-5), so 14:30 UTC = 9:30 AM EST
|
|
602
|
+
expect(formatted).toBe("Wed, Jan 15, 2025, 9:30:00 AM");
|
|
603
|
+
});
|
|
604
|
+
it("formats timestamp short with static timezone (America/Los_Angeles)", () => {
|
|
605
|
+
const obj = getObject();
|
|
606
|
+
const formatted = obj.$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue("createdDateTimeShort", EN_US);
|
|
607
|
+
|
|
608
|
+
// Should show time in PST (UTC-8), so 14:30 UTC = 6:30 AM PST
|
|
609
|
+
expect(formatted).toBe("Jan 15, 2025, 6:30 AM");
|
|
610
|
+
});
|
|
611
|
+
it("formats time only with UTC timezone", () => {
|
|
612
|
+
const obj = getObject();
|
|
613
|
+
const formatted = obj.$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue("createdTime", EN_US);
|
|
614
|
+
|
|
615
|
+
// Should show 14:30:00 in UTC as 2:30:00 PM
|
|
616
|
+
expect(formatted).toBe("2:30:00 PM");
|
|
617
|
+
});
|
|
618
|
+
it("formats year and month only", () => {
|
|
619
|
+
const obj = getObject();
|
|
620
|
+
const formatted = obj.$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue("yearMonth", EN_US);
|
|
621
|
+
expect(formatted).toBe("Jan 2025");
|
|
622
|
+
});
|
|
623
|
+
it("formats ISO instant", () => {
|
|
624
|
+
const obj = getObject();
|
|
625
|
+
const formatted = obj.$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue("isoInstant", EN_US);
|
|
626
|
+
expect(formatted).toBe("2025-01-15T14:30:00.000Z");
|
|
627
|
+
});
|
|
628
|
+
it("formats timestamp with user timezone (no override)", () => {
|
|
629
|
+
const obj = getObject();
|
|
630
|
+
const formatted = obj.$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue("timestampWithUserTimezone", EN_US);
|
|
631
|
+
|
|
632
|
+
// Without an override, should use the browser's default timezone
|
|
633
|
+
// The exact output depends on the system timezone, so we verify it's a non-empty string
|
|
634
|
+
expect(formatted).toBeTruthy();
|
|
635
|
+
expect(typeof formatted).toBe("string");
|
|
636
|
+
});
|
|
637
|
+
it("formats timestamp with user timezone override", () => {
|
|
638
|
+
const obj = getObject();
|
|
639
|
+
const formatted = obj.$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue("timestampWithUserTimezone", EN_US_TOKYO);
|
|
640
|
+
|
|
641
|
+
// With Asia/Tokyo override (UTC+9), 14:30 UTC = 23:30 JST
|
|
642
|
+
expect(formatted).toBe("Wed, Jan 15, 2025, 11:30:00 PM");
|
|
643
|
+
});
|
|
644
|
+
it("formats timestamp with dynamic timezone from property", () => {
|
|
645
|
+
const obj = getObject({
|
|
646
|
+
timezoneId: "Europe/London"
|
|
647
|
+
});
|
|
648
|
+
const formatted = obj.$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue("timestampWithDynamicTimezone", EN_US);
|
|
649
|
+
|
|
650
|
+
// Europe/London in January is GMT (UTC+0), so same as UTC: 14:30 = 2:30 PM
|
|
651
|
+
expect(formatted).toBe("Wed, Jan 15, 2025, 2:30:00 PM");
|
|
652
|
+
});
|
|
653
|
+
it("formats timestamp with dynamic timezone from property (different timezone)", () => {
|
|
654
|
+
const obj = getObject({
|
|
655
|
+
timezoneId: "Australia/Sydney"
|
|
656
|
+
});
|
|
657
|
+
const formatted = obj.$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue("timestampWithDynamicTimezone", EN_US);
|
|
658
|
+
|
|
659
|
+
// Australia/Sydney in January is UTC+11, so 14:30 UTC = 1:30 AM next day
|
|
660
|
+
expect(formatted).toBe("Thu, Jan 16, 2025, 1:30:00 AM");
|
|
661
|
+
});
|
|
662
|
+
it("formats timestamp when dynamic timezone property is null", () => {
|
|
663
|
+
const obj = getObject({
|
|
664
|
+
timezoneId: undefined
|
|
665
|
+
});
|
|
666
|
+
const formatted = obj.$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue("timestampWithDynamicTimezone", EN_US);
|
|
667
|
+
|
|
668
|
+
// Should fall back to no timezone (browser default)
|
|
669
|
+
// The exact output depends on the system timezone, so we verify it's a non-empty string
|
|
670
|
+
expect(formatted).toBeTruthy();
|
|
671
|
+
expect(typeof formatted).toBe("string");
|
|
672
|
+
});
|
|
673
|
+
it("handles invalid date strings gracefully", () => {
|
|
674
|
+
const obj = getObject({
|
|
675
|
+
createdDate: "invalid-date"
|
|
676
|
+
});
|
|
677
|
+
const formatted = obj.$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue("createdDate", EN_US);
|
|
678
|
+
expect(formatted).toBeUndefined();
|
|
679
|
+
});
|
|
680
|
+
});
|
|
681
|
+
describe("Relative time formatting", () => {
|
|
682
|
+
beforeEach(() => {
|
|
683
|
+
// Mock current time to January 15, 2025, 12:00:00 UTC since we're checking for relative time.
|
|
684
|
+
vi.setSystemTime(new Date("2025-01-15T12:00:00.000Z"));
|
|
685
|
+
});
|
|
686
|
+
afterEach(() => {
|
|
687
|
+
vi.useRealTimers();
|
|
688
|
+
});
|
|
689
|
+
it("formats time 45 seconds ago", () => {
|
|
690
|
+
const obj = getObject({
|
|
691
|
+
relativeDateTime: "2025-01-15T11:59:15.000Z"
|
|
692
|
+
});
|
|
693
|
+
const formatted = obj.$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue("relativeDateTime", EN_US);
|
|
694
|
+
expect(formatted).toBe("45 seconds ago");
|
|
695
|
+
});
|
|
696
|
+
it("formats time 30 minutes from now", () => {
|
|
697
|
+
const obj = getObject({
|
|
698
|
+
relativeDateTime: "2025-01-15T12:30:00.000Z"
|
|
699
|
+
});
|
|
700
|
+
const formatted = obj.$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue("relativeDateTime", EN_US);
|
|
701
|
+
expect(formatted).toBe("in 30 minutes");
|
|
702
|
+
});
|
|
703
|
+
it("formats time 3 hours ago", () => {
|
|
704
|
+
const obj = getObject({
|
|
705
|
+
relativeDateTime: "2025-01-15T09:00:00.000Z"
|
|
706
|
+
});
|
|
707
|
+
const formatted = obj.$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue("relativeDateTime", EN_US);
|
|
708
|
+
expect(formatted).toBe("3 hours ago");
|
|
709
|
+
});
|
|
710
|
+
it("formats now", () => {
|
|
711
|
+
const obj = getObject({
|
|
712
|
+
relativeDateTime: "2025-01-15T12:00:00.000Z"
|
|
713
|
+
});
|
|
714
|
+
const formatted = obj.$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue("relativeDateTime", EN_US);
|
|
715
|
+
expect(formatted).toBe("now");
|
|
716
|
+
});
|
|
717
|
+
it("falls back to absolute date formatting for times more than 1 day ago", () => {
|
|
718
|
+
const obj = getObject({
|
|
719
|
+
relativeDateTime: "2025-01-10T08:00:00.000Z"
|
|
720
|
+
});
|
|
721
|
+
const formatted = obj.$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue("relativeDateTime", EN_US_TOKYO);
|
|
722
|
+
expect(formatted).toBe("Fri, Jan 10, 2025, 5:00 PM");
|
|
723
|
+
});
|
|
724
|
+
});
|
|
422
725
|
});
|
|
423
726
|
//# sourceMappingURL=applyPropertyFormatter.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"applyPropertyFormatter.test.js","names":["describe","expect","it","InterfaceDefinitions","createOsdkObject","mockClient","EN_US","locale","DE_DE","FR_FR","OBJECT_DEF","apiName","type","primaryKeyApiName","titleProperty","rid","displayName","description","primaryKeyType","icon","undefined","visibility","pluralDisplayName","status","interfaceMap","inverseInterfaceMap","links","implements","properties","id","nullable","multiplicity","stringPropertyNoFormatting","booleanPropertyCustomLabels","valueFormatting","valueIfTrue","valueIfFalse","nullableBooleanProperty","priceStandard","numberType","baseFormatOptions","minimumFractionDigits","maximumFractionDigits","useGrouping","priceWithParenthesis","convertNegativeToParenthesis","amount","style","currencyCode","value","dynamicCurrencyAmount","propertyApiName","distance","unit","customQuantity","prefixedNumber","affix","prefix","postfix","minimumIntegerDigits","largeNumber","scaleType","thousandsNumber","billionsNumber","percentage","ratioType","basisPoints","DEFAULT_OBJECT_DATA","$apiName","$primaryKey","$title","$objectType","getObject","dataOverrides","objectData","obj","formatted","$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue","toBe","toBeUndefined"],"sources":["applyPropertyFormatter.test.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { describe, expect, it } from \"vitest\";\nimport type { MinimalClient } from \"../../MinimalClientContext.js\";\nimport type { FetchedObjectTypeDefinition } from \"../../ontology/OntologyProvider.js\";\nimport { InterfaceDefinitions } from \"../../ontology/OntologyProvider.js\";\nimport { createOsdkObject } from \"../convertWireToOsdkObjects/createOsdkObject.js\";\nimport type { SimpleOsdkProperties } from \"../SimpleOsdkProperties.js\";\n\ndescribe(\"getFormattedValue\", () => {\n const mockClient = {} as MinimalClient;\n const EN_US = { locale: \"en-US\" };\n const DE_DE = { locale: \"de-DE\" };\n const FR_FR = { locale: \"fr-FR\" };\n\n // Single object definition with properties for testing\n const OBJECT_DEF: FetchedObjectTypeDefinition = {\n apiName: \"TestObject\",\n type: \"object\",\n primaryKeyApiName: \"id\",\n titleProperty: \"id\",\n rid: \"ri.test.object\",\n displayName: \"Test Object\",\n description: \"A test object\",\n primaryKeyType: \"string\",\n icon: undefined,\n visibility: \"NORMAL\",\n pluralDisplayName: \"Test Objects\",\n status: \"ACTIVE\",\n interfaceMap: {},\n inverseInterfaceMap: {},\n links: {},\n implements: [],\n [InterfaceDefinitions]: {},\n properties: {\n id: {\n type: \"string\",\n nullable: false,\n multiplicity: false,\n },\n stringPropertyNoFormatting: {\n type: \"string\",\n nullable: true,\n multiplicity: false,\n },\n booleanPropertyCustomLabels: {\n type: \"boolean\",\n nullable: false,\n multiplicity: false,\n valueFormatting: {\n type: \"boolean\",\n valueIfTrue: \"Active\",\n valueIfFalse: \"Inactive\",\n },\n },\n nullableBooleanProperty: {\n type: \"boolean\",\n nullable: true,\n multiplicity: false,\n valueFormatting: {\n type: \"boolean\",\n valueIfTrue: \"Yes\",\n valueIfFalse: \"No\",\n },\n },\n priceStandard: {\n type: \"double\",\n nullable: false,\n multiplicity: false,\n valueFormatting: {\n type: \"number\",\n numberType: {\n type: \"standard\",\n baseFormatOptions: {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n useGrouping: true,\n },\n },\n },\n },\n priceWithParenthesis: {\n type: \"double\",\n nullable: false,\n multiplicity: false,\n valueFormatting: {\n type: \"number\",\n numberType: {\n type: \"standard\",\n baseFormatOptions: {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n convertNegativeToParenthesis: true,\n },\n },\n },\n },\n amount: {\n type: \"double\",\n nullable: false,\n multiplicity: false,\n valueFormatting: {\n type: \"number\",\n numberType: {\n type: \"currency\",\n style: \"STANDARD\",\n currencyCode: { type: \"constant\", value: \"USD\" },\n baseFormatOptions: {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n },\n },\n },\n },\n dynamicCurrencyAmount: {\n type: \"double\",\n nullable: false,\n multiplicity: false,\n valueFormatting: {\n type: \"number\",\n numberType: {\n type: \"currency\",\n style: \"COMPACT\",\n currencyCode: {\n type: \"propertyType\",\n propertyApiName: \"currencyCode\",\n },\n baseFormatOptions: {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n },\n },\n },\n },\n distance: {\n type: \"double\",\n nullable: false,\n multiplicity: false,\n valueFormatting: {\n type: \"number\",\n numberType: {\n type: \"standardUnit\",\n unit: { type: \"constant\", value: \"kilometer\" },\n baseFormatOptions: {\n minimumFractionDigits: 1,\n maximumFractionDigits: 1,\n },\n },\n },\n },\n customQuantity: {\n type: \"double\",\n nullable: false,\n multiplicity: false,\n valueFormatting: {\n type: \"number\",\n numberType: {\n type: \"customUnit\",\n unit: { type: \"constant\", value: \"widgets\" },\n baseFormatOptions: {\n minimumFractionDigits: 0,\n maximumFractionDigits: 0,\n },\n },\n },\n },\n prefixedNumber: {\n type: \"double\",\n nullable: false,\n multiplicity: false,\n valueFormatting: {\n type: \"number\",\n numberType: {\n type: \"affix\",\n affix: {\n prefix: { type: \"constant\", value: \"ID-\" },\n postfix: { type: \"constant\", value: \"-END\" },\n },\n baseFormatOptions: {\n minimumIntegerDigits: 4,\n useGrouping: false,\n },\n },\n },\n },\n largeNumber: {\n type: \"double\",\n nullable: false,\n multiplicity: false,\n valueFormatting: {\n type: \"number\",\n numberType: {\n type: \"scale\",\n scaleType: \"MILLIONS\",\n baseFormatOptions: {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n },\n },\n },\n },\n thousandsNumber: {\n type: \"double\",\n nullable: false,\n multiplicity: false,\n valueFormatting: {\n type: \"number\",\n numberType: {\n type: \"scale\",\n scaleType: \"THOUSANDS\",\n baseFormatOptions: {\n minimumFractionDigits: 1,\n maximumFractionDigits: 1,\n },\n },\n },\n },\n billionsNumber: {\n type: \"double\",\n nullable: false,\n multiplicity: false,\n valueFormatting: {\n type: \"number\",\n numberType: {\n type: \"scale\",\n scaleType: \"BILLIONS\",\n baseFormatOptions: {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n },\n },\n },\n },\n percentage: {\n type: \"double\",\n nullable: false,\n multiplicity: false,\n valueFormatting: {\n type: \"number\",\n numberType: {\n type: \"ratio\",\n ratioType: \"PERCENTAGE\",\n baseFormatOptions: {\n minimumFractionDigits: 1,\n maximumFractionDigits: 1,\n },\n },\n },\n },\n basisPoints: {\n type: \"double\",\n nullable: false,\n multiplicity: false,\n valueFormatting: {\n type: \"number\",\n numberType: {\n type: \"ratio\",\n ratioType: \"BASIS_POINTS\",\n baseFormatOptions: {\n minimumFractionDigits: 0,\n maximumFractionDigits: 0,\n },\n },\n },\n },\n currencyCode: {\n type: \"string\",\n nullable: true,\n multiplicity: false,\n },\n },\n };\n\n // Default object data with properties populated\n const DEFAULT_OBJECT_DATA: SimpleOsdkProperties = {\n $apiName: \"TestObject\",\n $primaryKey: \"test-123\",\n $title: \"Test Object\",\n $objectType: \"TestObject\",\n id: \"test-123\",\n stringPropertyNoFormatting: \"Plain text\",\n booleanPropertyCustomLabels: true,\n nullableBooleanProperty: undefined,\n priceStandard: 1234.56,\n priceWithParenthesis: -1234.56,\n amount: 1234.56,\n dynamicCurrencyAmount: 1234.56,\n distance: 42.7,\n customQuantity: 150,\n prefixedNumber: 42,\n largeNumber: 5000000,\n thousandsNumber: 5000,\n billionsNumber: 3000000000,\n percentage: 0.125,\n basisPoints: 0.125,\n currencyCode: \"EUR\",\n };\n\n // Helper to create an OSDK object with optional data overrides\n function getObject(dataOverrides?: Partial<SimpleOsdkProperties>) {\n const objectData = { ...DEFAULT_OBJECT_DATA, ...dataOverrides };\n return createOsdkObject(mockClient, OBJECT_DEF, objectData);\n }\n\n it(\"formats boolean true with custom label\", () => {\n const obj = getObject();\n const formatted = obj.$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue(\n \"booleanPropertyCustomLabels\",\n );\n\n expect(formatted).toBe(\"Active\");\n });\n\n it(\"formats boolean false with custom label\", () => {\n const obj = getObject({ booleanPropertyCustomLabels: false });\n const formatted = obj.$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue(\n \"booleanPropertyCustomLabels\",\n );\n\n expect(formatted).toBe(\"Inactive\");\n });\n\n it(\"returns undefined for property without formatting rules\", () => {\n const obj = getObject();\n const formatted = obj.$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue(\n \"stringPropertyNoFormatting\",\n );\n\n expect(formatted).toBeUndefined();\n });\n\n it(\"returns undefined for undefined values\", () => {\n const obj = getObject();\n const formatted = obj.$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue(\n \"nullableBooleanProperty\",\n );\n\n expect(formatted).toBeUndefined();\n });\n\n describe(\"Number formatting\", () => {\n it(\"formats standard number with grouping and decimals\", () => {\n const obj = getObject();\n expect(\n obj.$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue(\n \"priceStandard\",\n EN_US,\n ),\n ).toBe(\"1,234.56\");\n });\n\n it(\"converts negative to parenthesis when configured\", () => {\n const obj = getObject();\n expect(\n obj.$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue(\n \"priceWithParenthesis\",\n EN_US,\n ),\n ).toBe(\"(1,234.56)\");\n });\n\n it(\"formats currency with constant currency code\", () => {\n const obj = getObject();\n expect(\n obj.$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue(\n \"amount\",\n EN_US,\n ),\n ).toBe(\"$1,234.56\");\n });\n\n it(\"formats currency with dynamic currency code from property reference\", () => {\n const obj = getObject({ currencyCode: \"EUR\" });\n expect(\n obj.$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue(\n \"dynamicCurrencyAmount\",\n EN_US,\n ),\n ).toBe(\"€1,234.56\");\n });\n\n it(\"falls back to standard formatting when currency code is null\", () => {\n const obj = getObject({ currencyCode: undefined });\n expect(\n obj.$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue(\n \"dynamicCurrencyAmount\",\n EN_US,\n ),\n ).toBe(\"1,234.56\");\n });\n\n it(\"formats with standard unit\", () => {\n const obj = getObject();\n expect(\n obj.$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue(\n \"distance\",\n EN_US,\n ),\n ).toBe(\"42.7 km\");\n });\n\n it(\"formats with custom unit\", () => {\n const obj = getObject();\n expect(\n obj.$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue(\n \"customQuantity\",\n EN_US,\n ),\n ).toBe(\"150 widgets\");\n });\n\n it(\"formats with prefix and suffix\", () => {\n const obj = getObject();\n expect(\n obj.$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue(\n \"prefixedNumber\",\n EN_US,\n ),\n ).toBe(\"ID-0042-END\");\n });\n\n it(\"formats scaled millions in en-US\", () => {\n const obj = getObject();\n expect(\n obj.$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue(\n \"largeNumber\",\n EN_US,\n ),\n ).toBe(\"5.00M\");\n });\n\n it(\"formats scaled millions in de-DE\", () => {\n const obj = getObject();\n expect(\n obj.$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue(\n \"largeNumber\",\n DE_DE,\n ),\n ).toBe(\"5,00Mio.\");\n });\n\n it(\"formats scaled thousands in en-US\", () => {\n const obj = getObject();\n expect(\n obj.$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue(\n \"thousandsNumber\",\n EN_US,\n ),\n ).toBe(\"5.0K\");\n });\n\n it(\"formats scaled billions in fr-FR\", () => {\n const obj = getObject();\n expect(\n obj.$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue(\n \"billionsNumber\",\n FR_FR,\n ),\n ).toBe(\"3,00Md\");\n });\n\n it(\"formats percentage\", () => {\n const obj = getObject();\n expect(\n obj.$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue(\n \"percentage\",\n EN_US,\n ),\n ).toBe(\"12.5%\");\n });\n\n it(\"formats basis points\", () => {\n const obj = getObject();\n expect(\n obj.$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue(\n \"basisPoints\",\n EN_US,\n ),\n ).toBe(\"1,250 bps\");\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"applyPropertyFormatter.test.js","names":["afterEach","beforeEach","describe","expect","it","vi","InterfaceDefinitions","createOsdkObject","mockClient","EN_US","locale","DE_DE","FR_FR","EN_US_TOKYO","timezoneId","OBJECT_DEF","apiName","type","primaryKeyApiName","titleProperty","rid","displayName","description","primaryKeyType","icon","undefined","visibility","pluralDisplayName","status","interfaceMap","inverseInterfaceMap","links","implements","properties","id","nullable","multiplicity","stringPropertyNoFormatting","booleanPropertyCustomLabels","valueFormatting","valueIfTrue","valueIfFalse","nullableBooleanProperty","priceStandard","numberType","baseFormatOptions","minimumFractionDigits","maximumFractionDigits","useGrouping","priceWithParenthesis","convertNegativeToParenthesis","amount","style","currencyCode","value","dynamicCurrencyAmount","propertyApiName","distance","unit","customQuantity","prefixedNumber","affix","prefix","postfix","minimumIntegerDigits","largeNumber","scaleType","thousandsNumber","billionsNumber","percentage","ratioType","basisPoints","createdDate","format","createdDateTime","displayTimezone","zoneId","createdDateTimeShort","createdTime","yearMonth","isoInstant","timestampWithUserTimezone","timestampWithDynamicTimezone","relativeDateTime","DEFAULT_OBJECT_DATA","$apiName","$primaryKey","$title","$objectType","getObject","dataOverrides","objectData","obj","formatted","$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue","toBe","toBeUndefined","toBeTruthy","setSystemTime","Date","useRealTimers"],"sources":["applyPropertyFormatter.test.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { afterEach, beforeEach, describe, expect, it, vi } from \"vitest\";\nimport type { MinimalClient } from \"../../MinimalClientContext.js\";\nimport type { FetchedObjectTypeDefinition } from \"../../ontology/OntologyProvider.js\";\nimport { InterfaceDefinitions } from \"../../ontology/OntologyProvider.js\";\nimport { createOsdkObject } from \"../convertWireToOsdkObjects/createOsdkObject.js\";\nimport type { SimpleOsdkProperties } from \"../SimpleOsdkProperties.js\";\n\ndescribe(\"getFormattedValue\", () => {\n const mockClient = {} as MinimalClient;\n const EN_US = { locale: \"en-US\" };\n const DE_DE = { locale: \"de-DE\" };\n const FR_FR = { locale: \"fr-FR\" };\n const EN_US_TOKYO = { locale: \"en-US\", timezoneId: \"Asia/Tokyo\" };\n\n // Single object definition with properties for testing\n const OBJECT_DEF: FetchedObjectTypeDefinition = {\n apiName: \"TestObject\",\n type: \"object\",\n primaryKeyApiName: \"id\",\n titleProperty: \"id\",\n rid: \"ri.test.object\",\n displayName: \"Test Object\",\n description: \"A test object\",\n primaryKeyType: \"string\",\n icon: undefined,\n visibility: \"NORMAL\",\n pluralDisplayName: \"Test Objects\",\n status: \"ACTIVE\",\n interfaceMap: {},\n inverseInterfaceMap: {},\n links: {},\n implements: [],\n [InterfaceDefinitions]: {},\n properties: {\n id: {\n type: \"string\",\n nullable: false,\n multiplicity: false,\n },\n stringPropertyNoFormatting: {\n type: \"string\",\n nullable: true,\n multiplicity: false,\n },\n booleanPropertyCustomLabels: {\n type: \"boolean\",\n nullable: false,\n multiplicity: false,\n valueFormatting: {\n type: \"boolean\",\n valueIfTrue: \"Active\",\n valueIfFalse: \"Inactive\",\n },\n },\n nullableBooleanProperty: {\n type: \"boolean\",\n nullable: true,\n multiplicity: false,\n valueFormatting: {\n type: \"boolean\",\n valueIfTrue: \"Yes\",\n valueIfFalse: \"No\",\n },\n },\n priceStandard: {\n type: \"double\",\n nullable: false,\n multiplicity: false,\n valueFormatting: {\n type: \"number\",\n numberType: {\n type: \"standard\",\n baseFormatOptions: {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n useGrouping: true,\n },\n },\n },\n },\n priceWithParenthesis: {\n type: \"double\",\n nullable: false,\n multiplicity: false,\n valueFormatting: {\n type: \"number\",\n numberType: {\n type: \"standard\",\n baseFormatOptions: {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n convertNegativeToParenthesis: true,\n },\n },\n },\n },\n amount: {\n type: \"double\",\n nullable: false,\n multiplicity: false,\n valueFormatting: {\n type: \"number\",\n numberType: {\n type: \"currency\",\n style: \"STANDARD\",\n currencyCode: { type: \"constant\", value: \"USD\" },\n baseFormatOptions: {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n },\n },\n },\n },\n dynamicCurrencyAmount: {\n type: \"double\",\n nullable: false,\n multiplicity: false,\n valueFormatting: {\n type: \"number\",\n numberType: {\n type: \"currency\",\n style: \"COMPACT\",\n currencyCode: {\n type: \"propertyType\",\n propertyApiName: \"currencyCode\",\n },\n baseFormatOptions: {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n },\n },\n },\n },\n distance: {\n type: \"double\",\n nullable: false,\n multiplicity: false,\n valueFormatting: {\n type: \"number\",\n numberType: {\n type: \"standardUnit\",\n unit: { type: \"constant\", value: \"kilometer\" },\n baseFormatOptions: {\n minimumFractionDigits: 1,\n maximumFractionDigits: 1,\n },\n },\n },\n },\n customQuantity: {\n type: \"double\",\n nullable: false,\n multiplicity: false,\n valueFormatting: {\n type: \"number\",\n numberType: {\n type: \"customUnit\",\n unit: { type: \"constant\", value: \"widgets\" },\n baseFormatOptions: {\n minimumFractionDigits: 0,\n maximumFractionDigits: 0,\n },\n },\n },\n },\n prefixedNumber: {\n type: \"double\",\n nullable: false,\n multiplicity: false,\n valueFormatting: {\n type: \"number\",\n numberType: {\n type: \"affix\",\n affix: {\n prefix: { type: \"constant\", value: \"ID-\" },\n postfix: { type: \"constant\", value: \"-END\" },\n },\n baseFormatOptions: {\n minimumIntegerDigits: 4,\n useGrouping: false,\n },\n },\n },\n },\n largeNumber: {\n type: \"double\",\n nullable: false,\n multiplicity: false,\n valueFormatting: {\n type: \"number\",\n numberType: {\n type: \"scale\",\n scaleType: \"MILLIONS\",\n baseFormatOptions: {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n },\n },\n },\n },\n thousandsNumber: {\n type: \"double\",\n nullable: false,\n multiplicity: false,\n valueFormatting: {\n type: \"number\",\n numberType: {\n type: \"scale\",\n scaleType: \"THOUSANDS\",\n baseFormatOptions: {\n minimumFractionDigits: 1,\n maximumFractionDigits: 1,\n },\n },\n },\n },\n billionsNumber: {\n type: \"double\",\n nullable: false,\n multiplicity: false,\n valueFormatting: {\n type: \"number\",\n numberType: {\n type: \"scale\",\n scaleType: \"BILLIONS\",\n baseFormatOptions: {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n },\n },\n },\n },\n percentage: {\n type: \"double\",\n nullable: false,\n multiplicity: false,\n valueFormatting: {\n type: \"number\",\n numberType: {\n type: \"ratio\",\n ratioType: \"PERCENTAGE\",\n baseFormatOptions: {\n minimumFractionDigits: 1,\n maximumFractionDigits: 1,\n },\n },\n },\n },\n basisPoints: {\n type: \"double\",\n nullable: false,\n multiplicity: false,\n valueFormatting: {\n type: \"number\",\n numberType: {\n type: \"ratio\",\n ratioType: \"BASIS_POINTS\",\n baseFormatOptions: {\n minimumFractionDigits: 0,\n maximumFractionDigits: 0,\n },\n },\n },\n },\n currencyCode: {\n type: \"string\",\n nullable: true,\n multiplicity: false,\n },\n createdDate: {\n type: \"datetime\",\n nullable: false,\n multiplicity: false,\n valueFormatting: {\n type: \"date\",\n format: {\n type: \"localizedFormat\",\n format: \"DATE_FORMAT_DATE\",\n },\n },\n },\n createdDateTime: {\n type: \"datetime\",\n nullable: false,\n multiplicity: false,\n valueFormatting: {\n type: \"timestamp\",\n format: {\n type: \"localizedFormat\",\n format: \"DATE_FORMAT_DATE_TIME\",\n },\n displayTimezone: {\n type: \"static\",\n zoneId: { type: \"constant\", value: \"America/New_York\" },\n },\n },\n },\n createdDateTimeShort: {\n type: \"datetime\",\n nullable: false,\n multiplicity: false,\n valueFormatting: {\n type: \"timestamp\",\n format: {\n type: \"localizedFormat\",\n format: \"DATE_FORMAT_DATE_TIME_SHORT\",\n },\n displayTimezone: {\n type: \"static\",\n zoneId: { type: \"constant\", value: \"America/Los_Angeles\" },\n },\n },\n },\n createdTime: {\n type: \"datetime\",\n nullable: false,\n multiplicity: false,\n valueFormatting: {\n type: \"timestamp\",\n format: {\n type: \"localizedFormat\",\n format: \"DATE_FORMAT_TIME\",\n },\n displayTimezone: {\n type: \"static\",\n zoneId: { type: \"constant\", value: \"UTC\" },\n },\n },\n },\n yearMonth: {\n type: \"datetime\",\n nullable: false,\n multiplicity: false,\n valueFormatting: {\n type: \"date\",\n format: {\n type: \"localizedFormat\",\n format: \"DATE_FORMAT_YEAR_AND_MONTH\",\n },\n },\n },\n isoInstant: {\n type: \"datetime\",\n nullable: false,\n multiplicity: false,\n valueFormatting: {\n type: \"timestamp\",\n format: {\n type: \"localizedFormat\",\n format: \"DATE_FORMAT_ISO_INSTANT\",\n },\n displayTimezone: { type: \"user\" },\n },\n },\n timestampWithUserTimezone: {\n type: \"datetime\",\n nullable: false,\n multiplicity: false,\n valueFormatting: {\n type: \"timestamp\",\n format: {\n type: \"localizedFormat\",\n format: \"DATE_FORMAT_DATE_TIME\",\n },\n displayTimezone: { type: \"user\" },\n },\n },\n timestampWithDynamicTimezone: {\n type: \"datetime\",\n nullable: false,\n multiplicity: false,\n valueFormatting: {\n type: \"timestamp\",\n format: {\n type: \"localizedFormat\",\n format: \"DATE_FORMAT_DATE_TIME\",\n },\n displayTimezone: {\n type: \"static\",\n zoneId: { type: \"propertyType\", propertyApiName: \"timezoneId\" },\n },\n },\n },\n timezoneId: {\n type: \"string\",\n nullable: true,\n multiplicity: false,\n },\n relativeDateTime: {\n type: \"datetime\",\n nullable: false,\n multiplicity: false,\n valueFormatting: {\n type: \"timestamp\",\n format: {\n type: \"localizedFormat\",\n format: \"DATE_FORMAT_RELATIVE_TO_NOW\",\n },\n displayTimezone: { type: \"user\" },\n },\n },\n },\n };\n\n // Default object data with properties populated\n const DEFAULT_OBJECT_DATA: SimpleOsdkProperties = {\n $apiName: \"TestObject\",\n $primaryKey: \"test-123\",\n $title: \"Test Object\",\n $objectType: \"TestObject\",\n id: \"test-123\",\n stringPropertyNoFormatting: \"Plain text\",\n booleanPropertyCustomLabels: true,\n nullableBooleanProperty: undefined,\n priceStandard: 1234.56,\n priceWithParenthesis: -1234.56,\n amount: 1234.56,\n dynamicCurrencyAmount: 1234.56,\n distance: 42.7,\n customQuantity: 150,\n prefixedNumber: 42,\n largeNumber: 5000000,\n thousandsNumber: 5000,\n billionsNumber: 3000000000,\n percentage: 0.125,\n basisPoints: 0.125,\n currencyCode: \"EUR\",\n createdDate: \"2025-01-15T14:30:00.000Z\",\n createdDateTime: \"2025-01-15T14:30:00.000Z\",\n createdDateTimeShort: \"2025-01-15T14:30:00.000Z\",\n createdTime: \"2025-01-15T14:30:00.000Z\",\n yearMonth: \"2025-01-15T00:00:00.000Z\",\n isoInstant: \"2025-01-15T14:30:00.000Z\",\n timestampWithUserTimezone: \"2025-01-15T14:30:00.000Z\",\n timestampWithDynamicTimezone: \"2025-01-15T14:30:00.000Z\",\n relativeDateTime: \"2025-01-15T14:30:00.000Z\",\n timezoneId: \"Europe/London\",\n };\n\n // Helper to create an OSDK object with optional data overrides\n function getObject(dataOverrides?: Partial<SimpleOsdkProperties>) {\n const objectData = { ...DEFAULT_OBJECT_DATA, ...dataOverrides };\n return createOsdkObject(mockClient, OBJECT_DEF, objectData);\n }\n\n it(\"formats boolean true with custom label\", () => {\n const obj = getObject();\n const formatted = obj.$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue(\n \"booleanPropertyCustomLabels\",\n );\n\n expect(formatted).toBe(\"Active\");\n });\n\n it(\"formats boolean false with custom label\", () => {\n const obj = getObject({ booleanPropertyCustomLabels: false });\n const formatted = obj.$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue(\n \"booleanPropertyCustomLabels\",\n );\n\n expect(formatted).toBe(\"Inactive\");\n });\n\n it(\"returns undefined for property without formatting rules\", () => {\n const obj = getObject();\n const formatted = obj.$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue(\n \"stringPropertyNoFormatting\",\n );\n\n expect(formatted).toBeUndefined();\n });\n\n it(\"returns undefined for undefined values\", () => {\n const obj = getObject();\n const formatted = obj.$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue(\n \"nullableBooleanProperty\",\n );\n\n expect(formatted).toBeUndefined();\n });\n\n describe(\"Number formatting\", () => {\n it(\"formats standard number with grouping and decimals\", () => {\n const obj = getObject();\n expect(\n obj.$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue(\n \"priceStandard\",\n EN_US,\n ),\n ).toBe(\"1,234.56\");\n });\n\n it(\"converts negative to parenthesis when configured\", () => {\n const obj = getObject();\n expect(\n obj.$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue(\n \"priceWithParenthesis\",\n EN_US,\n ),\n ).toBe(\"(1,234.56)\");\n });\n\n it(\"formats currency with constant currency code\", () => {\n const obj = getObject();\n expect(\n obj.$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue(\n \"amount\",\n EN_US,\n ),\n ).toBe(\"$1,234.56\");\n });\n\n it(\"formats currency with dynamic currency code from property reference\", () => {\n const obj = getObject({ currencyCode: \"EUR\" });\n expect(\n obj.$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue(\n \"dynamicCurrencyAmount\",\n EN_US,\n ),\n ).toBe(\"€1,234.56\");\n });\n\n it(\"falls back to standard formatting when currency code is null\", () => {\n const obj = getObject({ currencyCode: undefined });\n expect(\n obj.$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue(\n \"dynamicCurrencyAmount\",\n EN_US,\n ),\n ).toBe(\"1,234.56\");\n });\n\n it(\"formats with standard unit\", () => {\n const obj = getObject();\n expect(\n obj.$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue(\n \"distance\",\n EN_US,\n ),\n ).toBe(\"42.7 km\");\n });\n\n it(\"formats with custom unit\", () => {\n const obj = getObject();\n expect(\n obj.$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue(\n \"customQuantity\",\n EN_US,\n ),\n ).toBe(\"150 widgets\");\n });\n\n it(\"formats with prefix and suffix\", () => {\n const obj = getObject();\n expect(\n obj.$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue(\n \"prefixedNumber\",\n EN_US,\n ),\n ).toBe(\"ID-0042-END\");\n });\n\n it(\"formats scaled millions in en-US\", () => {\n const obj = getObject();\n expect(\n obj.$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue(\n \"largeNumber\",\n EN_US,\n ),\n ).toBe(\"5.00M\");\n });\n\n it(\"formats scaled millions in de-DE\", () => {\n const obj = getObject();\n expect(\n obj.$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue(\n \"largeNumber\",\n DE_DE,\n ),\n ).toBe(\"5,00Mio.\");\n });\n\n it(\"formats scaled thousands in en-US\", () => {\n const obj = getObject();\n expect(\n obj.$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue(\n \"thousandsNumber\",\n EN_US,\n ),\n ).toBe(\"5.0K\");\n });\n\n it(\"formats scaled billions in fr-FR\", () => {\n const obj = getObject();\n expect(\n obj.$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue(\n \"billionsNumber\",\n FR_FR,\n ),\n ).toBe(\"3,00Md\");\n });\n\n it(\"formats percentage\", () => {\n const obj = getObject();\n expect(\n obj.$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue(\n \"percentage\",\n EN_US,\n ),\n ).toBe(\"12.5%\");\n });\n\n it(\"formats basis points\", () => {\n const obj = getObject();\n expect(\n obj.$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue(\n \"basisPoints\",\n EN_US,\n ),\n ).toBe(\"1,250 bps\");\n });\n });\n\n describe(\"Date and time formatting\", () => {\n it(\"formats date without timezone\", () => {\n const obj = getObject();\n const formatted = obj\n .$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue(\n \"createdDate\",\n EN_US,\n );\n\n expect(formatted).toBe(\"Wed, Jan 15, 2025\");\n });\n\n it(\"formats date in different locale\", () => {\n const obj = getObject();\n const formatted = obj\n .$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue(\n \"createdDate\",\n DE_DE,\n );\n\n expect(formatted).toBe(\"Mi., 15. Jan. 2025\");\n });\n\n it(\"formats timestamp with static timezone (America/New_York)\", () => {\n const obj = getObject();\n const formatted = obj\n .$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue(\n \"createdDateTime\",\n EN_US,\n );\n\n // Should show time in EST (UTC-5), so 14:30 UTC = 9:30 AM EST\n expect(formatted).toBe(\"Wed, Jan 15, 2025, 9:30:00 AM\");\n });\n\n it(\"formats timestamp short with static timezone (America/Los_Angeles)\", () => {\n const obj = getObject();\n const formatted = obj\n .$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue(\n \"createdDateTimeShort\",\n EN_US,\n );\n\n // Should show time in PST (UTC-8), so 14:30 UTC = 6:30 AM PST\n expect(formatted).toBe(\"Jan 15, 2025, 6:30 AM\");\n });\n\n it(\"formats time only with UTC timezone\", () => {\n const obj = getObject();\n const formatted = obj\n .$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue(\n \"createdTime\",\n EN_US,\n );\n\n // Should show 14:30:00 in UTC as 2:30:00 PM\n expect(formatted).toBe(\"2:30:00 PM\");\n });\n\n it(\"formats year and month only\", () => {\n const obj = getObject();\n const formatted = obj\n .$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue(\n \"yearMonth\",\n EN_US,\n );\n\n expect(formatted).toBe(\"Jan 2025\");\n });\n\n it(\"formats ISO instant\", () => {\n const obj = getObject();\n const formatted = obj\n .$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue(\n \"isoInstant\",\n EN_US,\n );\n\n expect(formatted).toBe(\"2025-01-15T14:30:00.000Z\");\n });\n\n it(\"formats timestamp with user timezone (no override)\", () => {\n const obj = getObject();\n const formatted = obj\n .$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue(\n \"timestampWithUserTimezone\",\n EN_US,\n );\n\n // Without an override, should use the browser's default timezone\n // The exact output depends on the system timezone, so we verify it's a non-empty string\n expect(formatted).toBeTruthy();\n expect(typeof formatted).toBe(\"string\");\n });\n\n it(\"formats timestamp with user timezone override\", () => {\n const obj = getObject();\n const formatted = obj\n .$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue(\n \"timestampWithUserTimezone\",\n EN_US_TOKYO,\n );\n\n // With Asia/Tokyo override (UTC+9), 14:30 UTC = 23:30 JST\n expect(formatted).toBe(\"Wed, Jan 15, 2025, 11:30:00 PM\");\n });\n\n it(\"formats timestamp with dynamic timezone from property\", () => {\n const obj = getObject({ timezoneId: \"Europe/London\" });\n const formatted = obj\n .$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue(\n \"timestampWithDynamicTimezone\",\n EN_US,\n );\n\n // Europe/London in January is GMT (UTC+0), so same as UTC: 14:30 = 2:30 PM\n expect(formatted).toBe(\"Wed, Jan 15, 2025, 2:30:00 PM\");\n });\n\n it(\"formats timestamp with dynamic timezone from property (different timezone)\", () => {\n const obj = getObject({ timezoneId: \"Australia/Sydney\" });\n const formatted = obj\n .$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue(\n \"timestampWithDynamicTimezone\",\n EN_US,\n );\n\n // Australia/Sydney in January is UTC+11, so 14:30 UTC = 1:30 AM next day\n expect(formatted).toBe(\"Thu, Jan 16, 2025, 1:30:00 AM\");\n });\n\n it(\"formats timestamp when dynamic timezone property is null\", () => {\n const obj = getObject({ timezoneId: undefined });\n const formatted = obj\n .$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue(\n \"timestampWithDynamicTimezone\",\n EN_US,\n );\n\n // Should fall back to no timezone (browser default)\n // The exact output depends on the system timezone, so we verify it's a non-empty string\n expect(formatted).toBeTruthy();\n expect(typeof formatted).toBe(\"string\");\n });\n\n it(\"handles invalid date strings gracefully\", () => {\n const obj = getObject({ createdDate: \"invalid-date\" });\n const formatted = obj\n .$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue(\n \"createdDate\",\n EN_US,\n );\n\n expect(formatted).toBeUndefined();\n });\n });\n\n describe(\"Relative time formatting\", () => {\n beforeEach(() => {\n // Mock current time to January 15, 2025, 12:00:00 UTC since we're checking for relative time.\n vi.setSystemTime(new Date(\"2025-01-15T12:00:00.000Z\"));\n });\n\n afterEach(() => {\n vi.useRealTimers();\n });\n\n it(\"formats time 45 seconds ago\", () => {\n const obj = getObject({ relativeDateTime: \"2025-01-15T11:59:15.000Z\" });\n const formatted = obj\n .$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue(\n \"relativeDateTime\",\n EN_US,\n );\n\n expect(formatted).toBe(\"45 seconds ago\");\n });\n\n it(\"formats time 30 minutes from now\", () => {\n const obj = getObject({ relativeDateTime: \"2025-01-15T12:30:00.000Z\" });\n const formatted = obj\n .$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue(\n \"relativeDateTime\",\n EN_US,\n );\n\n expect(formatted).toBe(\"in 30 minutes\");\n });\n\n it(\"formats time 3 hours ago\", () => {\n const obj = getObject({ relativeDateTime: \"2025-01-15T09:00:00.000Z\" });\n const formatted = obj\n .$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue(\n \"relativeDateTime\",\n EN_US,\n );\n\n expect(formatted).toBe(\"3 hours ago\");\n });\n\n it(\"formats now\", () => {\n const obj = getObject({ relativeDateTime: \"2025-01-15T12:00:00.000Z\" });\n const formatted = obj\n .$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue(\n \"relativeDateTime\",\n EN_US,\n );\n\n expect(formatted).toBe(\"now\");\n });\n\n it(\"falls back to absolute date formatting for times more than 1 day ago\", () => {\n const obj = getObject({ relativeDateTime: \"2025-01-10T08:00:00.000Z\" });\n const formatted = obj\n .$__EXPERIMENTAL__NOT_SUPPORTED_YET__getFormattedValue(\n \"relativeDateTime\",\n EN_US_TOKYO,\n );\n\n expect(formatted).toBe(\"Fri, Jan 10, 2025, 5:00 PM\");\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
|