feat: 重建 Sense 单路实时监看 (#68)
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
import SenseLiveview from '@/views/sense/liveview/index.vue'
|
||||
import { createLiveviewSession, getLiveviewSession, listLiveviewRoutes } from '@/api/sense/liveview'
|
||||
|
||||
jest.mock('@/api/sense/liveview', () => ({
|
||||
listLiveviewRoutes: jest.fn(),
|
||||
createLiveviewSession: jest.fn(),
|
||||
getLiveviewSession: jest.fn()
|
||||
}))
|
||||
|
||||
describe('Sense live-view page lifecycle', () => {
|
||||
beforeEach(() => {
|
||||
jest.useFakeTimers()
|
||||
listLiveviewRoutes.mockResolvedValue({ data: { list: [], count: 0 }})
|
||||
createLiveviewSession.mockResolvedValue({ data: { id: 'view_test', playerUrl: '/api/v1/liveview/player/view_test', status: 'waiting', detail: '等待播放器连接' }})
|
||||
getLiveviewSession.mockResolvedValue({ data: { id: 'view_test', playerUrl: '/api/v1/liveview/player/view_test', status: 'ready', detail: '上游拉流正常' }})
|
||||
})
|
||||
|
||||
afterEach(() => {
|
||||
jest.clearAllMocks()
|
||||
jest.useRealTimers()
|
||||
})
|
||||
|
||||
it('opens only the selected route and clears polling when unmounted', async() => {
|
||||
const context = {
|
||||
...SenseLiveview.data(),
|
||||
currentRoute: { id: 'device-1:main', deviceName: '东门摄像机' },
|
||||
playerOpen: true
|
||||
}
|
||||
context.stopTimers = SenseLiveview.methods.stopTimers.bind(context)
|
||||
context.refreshSession = SenseLiveview.methods.refreshSession.bind(context)
|
||||
context.startPolling = SenseLiveview.methods.startPolling.bind(context)
|
||||
await SenseLiveview.methods.openSession.call(context)
|
||||
|
||||
expect(createLiveviewSession).toHaveBeenCalledWith('device-1:main')
|
||||
expect(context.session.playerUrl).toBe('/api/v1/liveview/player/view_test')
|
||||
expect(jest.getTimerCount()).toBe(2)
|
||||
|
||||
SenseLiveview.beforeUnmount.call(context)
|
||||
expect(jest.getTimerCount()).toBe(0)
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user