/* eslint-disable @typescript-eslint/no-explicit-any */ /* eslint-disable @typescript-eslint/no-unused-vars */ import { publishMessage, isAdminShellEvent, listenForAdminShellEvents, } from '../message' import { adminStore } from '../admin-store' import { vi, test, expect } from 'vitest' test('publishMessage should post message to parent window', () => { const mockPostMessage = vi.spyOn(window, 'postMessage') global.window = { parent: { postMessage: mockPostMessage, }, } as any const params = { type: 'test-message', data: {}, } publishMessage(params) expect(mockPostMessage).toHaveBeenCalledWith( { id: 'admin-ejected-app-message', ...params, }, '*', ) }) test('isAdminShellEvent should return true for admin iframe events', () => { const event = { type: 'admin-iframe-message', data: {}, } expect(isAdminShellEvent(event)).toBe(true) }) test('listenForAdminShellEvents should set adminStore when receiving admin iframe events', () => { const mockAdminStoreSet = vi.spyOn(adminStore, 'set') as any adminStore.set = mockAdminStoreSet const event = { type: 'admin-iframe-message', data: { test: 'data', }, } const messageEvent = { data: event, } Object.defineProperty(window, 'addEventListener', { value: (_: any, callback: any) => { callback(messageEvent) }, }) Object.defineProperty(window, 'dispatchEvent', { value: (_: Event) => { return true }, }) listenForAdminShellEvents() window.dispatchEvent(new MessageEvent('message', messageEvent)) expect(mockAdminStoreSet).toHaveBeenCalledWith(event.data) })