/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import React from "react";
import { RenderDelay } from "../render-delay";
import type { DiRender } from "../../test-utils/renderFor";
import { renderFor } from "../../test-utils/renderFor";
import { getDiForUnitTesting } from "../../../getDiForUnitTesting";
import { advanceFakeTime, useFakeTime } from "../../../../common/test-utils/use-fake-time";
import cancelIdleCallbackInjectable from "../cancel-idle-callback.injectable";
import requestIdleCallbackInjectable from "../request-idle-callback.injectable";
import type { RenderResult } from "@testing-library/react";
import idleCallbackTimeoutInjectable from "../idle-callback-timeout.injectable";
describe("", () => {
let render: DiRender;
beforeEach(() => {
const di = getDiForUnitTesting({ doGeneralOverrides: true });
render = renderFor(di);
useFakeTime("2020-01-17 12:18:19");
di.override(cancelIdleCallbackInjectable, () => clearTimeout);
di.override(requestIdleCallbackInjectable, () => (callback, opts) => setTimeout(callback, opts.timeout) as any);
di.override(idleCallbackTimeoutInjectable, () => 5);
});
describe("when rendered without placeholder", () => {
let result: RenderResult;
beforeEach(() => {
result = render((
));
});
it("renders", () => {
expect(result.baseElement).toMatchSnapshot();
});
it("does not show the children yet", () => {
expect(result.queryByTestId("child")).not.toBeInTheDocument();
});
describe("when the idle callback is called", () => {
beforeEach(() => {
advanceFakeTime(5);
});
it("renders", () => {
expect(result.baseElement).toMatchSnapshot();
});
it("shows the children", () => {
expect(result.queryByTestId("child")).toBeInTheDocument();
});
});
});
describe("when rendered with placeholder", () => {
let result: RenderResult;
beforeEach(() => {
result = render((
}
>
));
});
it("renders", () => {
expect(result.baseElement).toMatchSnapshot();
});
it("does not show the children yet", () => {
expect(result.queryByTestId("child")).not.toBeInTheDocument();
});
it("shows the placeholder", () => {
expect(result.queryByTestId("placeholder")).toBeInTheDocument();
});
describe("when the idle callback is called", () => {
beforeEach(() => {
advanceFakeTime(5);
});
it("renders", () => {
expect(result.baseElement).toMatchSnapshot();
});
it("shows the children", () => {
expect(result.queryByTestId("child")).toBeInTheDocument();
});
it("does not show the placeholder", () => {
expect(result.queryByTestId("placeholder")).not.toBeInTheDocument();
});
});
});
});