| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- import { AppStorage } from '@kit.ArkUI'
- import { describe, expect, it } from '@ohos/hypium'
- import { PlaybackStateBridge } from '../../../main/ets/controller/PlaybackStateBridge'
- import { VideoItem } from '../../../main/ets/viewmodel/VideoItem'
- export default function playbackStateBridgeTest() {
- describe('PlaybackStateBridgeTest', () => {
- it('replaceQueueSyncsCurrentSongAndIndex', 0, () => {
- const bridge = PlaybackStateBridge.getInstance()
- const songs: VideoItem[] = [
- new VideoItem('Song A', '1', '/music/a.flac', 0, 0, '2026-04-02'),
- new VideoItem('Song B', '2', '/music/b.flac', 0, 0, '2026-04-02')
- ]
- bridge.reset()
- bridge.replaceQueue(songs, 99)
- const snapshot = bridge.getSnapshot()
- expect(snapshot.queue.length).assertEqual(2)
- expect(snapshot.currentIndex).assertEqual(1)
- expect(snapshot.currentSong?.filePath ?? '').assertEqual('/music/b.flac')
- const storedQueue = AppStorage.get<VideoItem[]>('currentQueue') ?? []
- expect(storedQueue.length).assertEqual(2)
- expect(storedQueue[1]?.filePath ?? '').assertEqual('/music/b.flac')
- expect(AppStorage.get<VideoItem>('currentSong')?.filePath ?? '').assertEqual('/music/b.flac')
- expect(AppStorage.get<number>('currentQueueIndex')).assertEqual(1)
- })
- it('updatePlaybackStateDoesNotDropQueue', 0, () => {
- const bridge = PlaybackStateBridge.getInstance()
- const songs: VideoItem[] = [
- new VideoItem('Song A', '1', '/music/a.flac', 0, 0, '2026-04-02')
- ]
- bridge.reset()
- bridge.replaceQueue(songs, 0)
- bridge.updatePlaybackState(true, 1350, 4200)
- const snapshot = bridge.getSnapshot()
- expect(snapshot.isPlaying).assertTrue()
- expect(snapshot.positionMs).assertEqual(1350)
- expect(snapshot.durationMs).assertEqual(4200)
- expect(snapshot.currentSong?.filePath ?? '').assertEqual('/music/a.flac')
- expect(AppStorage.get<boolean>('isPlaying')).assertTrue()
- })
- it('replaceQueueWithEmptyQueueResetsPlaybackState', 0, () => {
- const bridge = PlaybackStateBridge.getInstance()
- bridge.reset()
- bridge.replaceQueue([], 0)
- const snapshot = bridge.getSnapshot()
- expect(snapshot.queue.length).assertEqual(0)
- expect(snapshot.currentIndex).assertEqual(-1)
- expect(snapshot.isPlaying).assertFalse()
- expect(AppStorage.get<boolean>('isPlaying')).assertFalse()
- })
- })
- }
|