2022-08-16 14:05:03 +02:00
|
|
|
import { SyncedItemMetadata } from "./sync-item-metadata";
|
|
|
|
|
|
|
|
describe("build from key value pair", () => {
|
2022-08-16 17:59:50 +02:00
|
|
|
const propertyKey = "propertyKey";
|
2022-08-16 14:05:03 +02:00
|
|
|
const key = "key";
|
|
|
|
const initializer = (s: any) => "used initializer";
|
|
|
|
class TestClass {}
|
|
|
|
const ctor = TestClass;
|
|
|
|
|
|
|
|
it("should call initializer if provided", () => {
|
|
|
|
const actual = SyncedItemMetadata.buildFromKeyValuePair(
|
|
|
|
{},
|
|
|
|
{
|
2022-08-16 17:59:50 +02:00
|
|
|
propertyKey,
|
|
|
|
sessionKey: "key",
|
2022-08-16 14:05:03 +02:00
|
|
|
initializer: initializer,
|
|
|
|
}
|
|
|
|
);
|
|
|
|
|
|
|
|
expect(actual).toEqual("used initializer");
|
|
|
|
});
|
|
|
|
|
|
|
|
it("should call ctor if provided", () => {
|
|
|
|
const expected = { provided: "value" };
|
|
|
|
const actual = SyncedItemMetadata.buildFromKeyValuePair(expected, {
|
2022-08-16 17:59:50 +02:00
|
|
|
propertyKey,
|
|
|
|
sessionKey: key,
|
2022-08-16 14:05:03 +02:00
|
|
|
ctor: ctor,
|
|
|
|
});
|
|
|
|
|
|
|
|
expect(actual).toBeInstanceOf(ctor);
|
|
|
|
expect(actual).toEqual(expect.objectContaining(expected));
|
|
|
|
});
|
|
|
|
|
|
|
|
it("should prefer using initializer if both are provided", () => {
|
|
|
|
const actual = SyncedItemMetadata.buildFromKeyValuePair(
|
|
|
|
{},
|
|
|
|
{
|
2022-08-16 17:59:50 +02:00
|
|
|
propertyKey,
|
|
|
|
sessionKey: key,
|
2022-08-16 14:05:03 +02:00
|
|
|
initializer: initializer,
|
|
|
|
ctor: ctor,
|
|
|
|
}
|
|
|
|
);
|
|
|
|
|
|
|
|
expect(actual).toEqual("used initializer");
|
|
|
|
});
|
|
|
|
|
|
|
|
it("should honor initialize as array", () => {
|
|
|
|
const actual = SyncedItemMetadata.buildFromKeyValuePair([1, 2], {
|
2022-08-16 17:59:50 +02:00
|
|
|
propertyKey,
|
|
|
|
sessionKey: key,
|
2022-08-16 14:05:03 +02:00
|
|
|
initializer: initializer,
|
|
|
|
initializeAsArray: true,
|
|
|
|
});
|
|
|
|
|
|
|
|
expect(actual).toEqual(["used initializer", "used initializer"]);
|
|
|
|
});
|
|
|
|
});
|