Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 56 additions & 0 deletions js/utils/__tests__/utils.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -669,6 +669,62 @@ describe("Utility Functions (logic-only)", () => {
it("returns undefined for non-string input", () => {
expect(resolveObject(123)).toBeUndefined();
});
it("returns undefined for empty string", () => {
expect(resolveObject("")).toBeUndefined();
});
it("returns undefined for boolean input", () => {
expect(resolveObject(true)).toBeUndefined();
});
it("returns undefined for object input", () => {
expect(resolveObject({})).toBeUndefined();
});
it("returns undefined when null encountered in path", () => {
global.TestNull = { A: null };
expect(resolveObject("TestNull.A.B")).toBeUndefined();
delete global.TestNull;
});
it("returns undefined and warns if an error occurs during resolution", () => {
const warnSpy = jest.spyOn(console, "warn").mockImplementation(() => {});

const originalSplit = String.prototype.split;
String.prototype.split = () => {
throw new Error("forced error");
};
expect(resolveObject("Any.Path")).toBeUndefined();
expect(warnSpy).toHaveBeenCalled();
String.prototype.split = originalSplit;
warnSpy.mockRestore();
});
});
describe("delayExecution()", () => {
beforeEach(() => {
jest.useFakeTimers();
});
afterEach(() => {
jest.useRealTimers();
});
it("resolves after the specified duration", async () => {
const promise = delayExecution(1000);
jest.advanceTimersByTime(1000);
await expect(promise).resolves.toBe(true);
});
it("does not resolve before duration", async () => {
const promise = delayExecution(1000);

let resolved = false;
promise.then(() => {
resolved = true;
});
jest.advanceTimersByTime(500);
await Promise.resolve();
expect(resolved).toBe(false);
jest.advanceTimersByTime(500);
});
it("resolves immediately when duration is 0", async () => {
const promise = delayExecution(0);
jest.advanceTimersByTime(0);
await expect(promise).resolves.toBe(true);
});
});
describe("importMembers()", () => {
class DummyModel {
Expand Down
Loading