移除未启用的 SGS iframe 运行时代码
Some checks failed
CI / verify (push) Has been cancelled

This commit is contained in:
lyf
2026-07-16 14:51:08 +08:00
parent d86845afeb
commit 19ecca84e8
6 changed files with 43 additions and 315 deletions

View File

@@ -1,9 +1,11 @@
import { createHash } from 'node:crypto'
import { existsSync, readFileSync } from 'node:fs'
import { resolve } from 'node:path'
import { describe, expect, it } from 'vitest'
const sdkDirectory = resolve(process.cwd(), 'static/sgs-map-sdk')
const readSdkFile = (name: string) => readFileSync(resolve(sdkDirectory, name), 'utf8')
const sha256 = (name: string) => createHash('sha256').update(readFileSync(resolve(sdkDirectory, name))).digest('hex').toUpperCase()
describe('SGS Map SDK 2.5.0 release contract', () => {
it('keeps the local package, bridge self-report, and default Engine path aligned', () => {
@@ -30,4 +32,22 @@ describe('SGS Map SDK 2.5.0 release contract', () => {
expect(existsSync(resolve(sdkDirectory, file))).toBe(true)
})
})
it('pins the complete 2.5.0 artifact set to prevent a partial stale package', () => {
expect({
global: sha256('index.global.js'),
globalMap: sha256('index.global.js.map'),
module: sha256('index.mjs'),
moduleMap: sha256('index.mjs.map'),
types: sha256('index.d.ts'),
moduleTypes: sha256('index.d.mts')
}).toEqual({
global: '3C93DEE217615FD9454A4A8EE4282114471B36DA2B3C7A5F2B2C0FDB18BEF5D1',
globalMap: 'EB0C1470AED546194B48386DD092E6D5813CA41E4C3B561838CFC5AE290677CF',
module: 'D3C885464B887276BCB420A45BBB5AF2BECA0779482571013789EF61A0E29D59',
moduleMap: 'A074A886F5EFE400ACD8F7A5591B7043BA2FF10500B429AFC6490BB7EEAA1430',
types: '2E5875CABC6464F2A60625F7400B34B048BD706411FDEA271DBD9D3D4A9BDDD4',
moduleTypes: '2E5875CABC6464F2A60625F7400B34B048BD706411FDEA271DBD9D3D4A9BDDD4'
})
})
})

View File

@@ -1,90 +0,0 @@
import { beforeEach, describe, expect, it, vi } from 'vitest'
import type {
SgsMapEvents,
SgsMapSDKConstructor,
SgsMapSDKInstance
} from '@/types/sgs-map-sdk'
const loadSgsMapScript = vi.hoisted(() => vi.fn())
vi.mock('@/services/sgs/SgsMapScriptLoader', () => ({
loadSgsMapScript
}))
import { SgsMapService } from '@/services/sgs/SgsMapService'
const createHarness = async () => {
const listeners = new Map<keyof SgsMapEvents, (payload: never) => void>()
const sdk = {
on: vi.fn((event: keyof SgsMapEvents, listener: (payload: never) => void) => {
listeners.set(event, listener)
}),
off: vi.fn(),
getIsReady: vi.fn(() => true),
changeFloor: vi.fn().mockResolvedValue({ success: true, floorId: 'L2' }),
resetView: vi.fn().mockResolvedValue({ success: true }),
setViewMode: vi.fn().mockResolvedValue({ success: true, mode: '2d' }),
destroy: vi.fn()
} as unknown as SgsMapSDKInstance
const SDKConstructor = vi.fn(() => sdk) as unknown as SgsMapSDKConstructor
loadSgsMapScript.mockResolvedValue(SDKConstructor)
const service = new SgsMapService({
container: {} as HTMLElement,
scriptUrl: '/static/sgs-map-sdk/index.global.js?v=2.5.0',
sdkUrl: '/engine/index.html',
targetOrigin: 'https://map.example.com',
floorId: 'L1',
timeout: 7000
})
const ready = service.init()
await vi.waitFor(() => expect(SDKConstructor).toHaveBeenCalledOnce())
listeners.get('ready')?.({
engineVersion: '2.5.0',
protocolVersion: 2
} as never)
await ready
return { sdk, service, SDKConstructor }
}
beforeEach(() => {
loadSgsMapScript.mockReset()
})
describe('SGS Map SDK 2.5.0 service adapter', () => {
it('向 SDK 构造器传入完整的 Engine 桥接配置', async () => {
const { SDKConstructor } = await createHarness()
expect(SDKConstructor).toHaveBeenCalledWith({
container: expect.any(Object),
sdkUrl: '/engine/index.html',
targetOrigin: 'https://map.example.com',
floorId: 'L1',
timeout: 7000
})
})
it('透传楼层强制刷新选项和统一命令超时', async () => {
const { sdk, service } = await createHarness()
await expect(service.changeFloor('L2', { forceReload: true })).resolves.toEqual({
success: true,
floorId: 'L2'
})
expect(sdk.changeFloor).toHaveBeenCalledWith('L2', 7000, { forceReload: true })
})
it('返回异步视图命令结果并向上传递 SDK 错误', async () => {
const { sdk, service } = await createHarness()
await expect(service.setViewMode('2d')).resolves.toEqual({ success: true, mode: '2d' })
expect(sdk.setViewMode).toHaveBeenCalledWith('2d', 7000)
vi.mocked(sdk.resetView).mockRejectedValueOnce(new Error('RESET_VIEW failed'))
await expect(service.resetView()).rejects.toThrow('RESET_VIEW failed')
expect(sdk.resetView).toHaveBeenCalledWith(7000)
})
})