import { JoliboxSDK } from '../index'; describe('JoliboxSDK Singleton Pattern', () => { beforeEach(() => { //eslint-disable-next-line @typescript-eslint/ban-ts-comment //@ts-ignore JoliboxSDK.instance = null; if (window.joliboxsdk) { //eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore delete window.joliboxsdk; } }); it('should return the same instance when using new constructor', () => { // 创建第一个实例 const instance1 = new JoliboxSDK(); // 创建第二个实例 const instance2 = new JoliboxSDK(); // 验证两个实例是同一个对象 expect(instance1).toBe(instance2); }); it('should return the same instance when using getInstance method', () => { // 使用静态方法创建实例 const instance1 = JoliboxSDK.getInstance(); // 再次使用静态方法获取实例 const instance2 = JoliboxSDK.getInstance(); // 验证两个实例是同一个对象 expect(instance1).toBe(instance2); }); it('should return the same instance when mixing constructor and getInstance', () => { // 使用构造函数创建实例 const instance1 = new JoliboxSDK(); // 使用静态方法获取实例 const instance2 = JoliboxSDK.getInstance(); // 验证两个实例是同一个对象 expect(instance1).toBe(instance2); }); it('should initialize window.joliboxsdk with SDK instances', () => { // 创建实例 new JoliboxSDK(); // 验证全局对象上的引用 expect(window.joliboxsdk).toBeDefined(); expect(window.joliboxsdk.runtime).toBeDefined(); expect(window.joliboxsdk.ads).toBeDefined(); expect(window.joliboxsdk.lifecycle).toBeDefined(); expect(window.joliboxsdk.storage).toBeDefined(); expect(window.joliboxsdk.keyboard).toBeDefined(); expect(window.joliboxsdk.task).toBeDefined(); expect(window.joliboxsdk.router).toBeDefined(); }); });