// import { Bundle } from "./index"; // import { Runner } from "../commons/types/runner"; // import { Http } from "../commons/utils/http"; // import { Logger } from "../commons/utils/logger"; // import { SessionUtils } from "../commons/utils/session-utils"; // let runner: Runner; // beforeEach(() => { // runner = new (class DummyRunner extends Runner { // public start = jest.fn(); // protected run = jest.fn(); // })(); // const post = jest.fn().mockReturnValue({ status: 204 }); // post.mockClear(); // const log = jest.fn().mockReturnValue({ status: 204 }); // log.mockClear(); // (Logger as any).log = log; // (Http as any).post = post; // SessionUtils.isNewSession = jest.fn().mockReturnValue(true); // }); // test("run fine without any runners defined", async () => { // await Bundle.run(); // expect(window.dataLayer).toBeDefined(); // expect(runner.start).not.toBeCalled(); // }); // test("run appropriate runner when defined", async () => { // Bundle.use(runner); // await Bundle.run(); // expect(window.dataLayer).toBeDefined(); // expect(runner.start).toBeCalledTimes(1); // }); // test("Bundle should send session start event when session is started", async () => { // await Bundle.run(); // expect(window.dataLayer).toBeDefined(); // expect(Http.post).toBeCalledTimes(1); // }); // test("Bundle should log whenever an error occurs in the runner", async () => { // const error = new Error("Uncaught Error in runner."); // runner.start = jest.fn().mockRejectedValue(error); // Bundle.use(runner); // await Bundle.run(); // await new Promise((resolve) => setTimeout(resolve, 1000)); // expect(Logger.log).toHaveBeenCalledTimes(1); // expect(Logger.log).toHaveBeenCalledWith(error); // });