mirror of
https://github.com/arthur-pbty/arthur-os.git
synced 2026-08-06 20:28:23 +02:00
40 lines
2.1 KiB
Bash
40 lines
2.1 KiB
Bash
#!/bin/bash
|
|
|
|
set -euo pipefail
|
|
|
|
source "$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)/base-test.sh"
|
|
|
|
run_node_test <<'JS'
|
|
const media = requireFromRoot('shell/plugins/services/media/MediaModel.js')
|
|
|
|
assert(media.isProxyPlayer({ dbusName: 'org.mpris.MediaPlayer2.playerctld' }), 'media detects playerctld proxy by DBus name')
|
|
assert(media.isProxyPlayer({ desktopEntry: 'playerctld' }), 'media detects playerctld proxy by desktop entry')
|
|
assert(media.hasMetadata({ identity: 'Spotify' }), 'media detects identity metadata')
|
|
assert(media.hasTrackMetadata({ trackTitle: 'Track' }), 'media detects track metadata')
|
|
assert(media.playerCanControl({ canGoNext: true }), 'media detects controllable players')
|
|
assert(media.canHandleAction({ canTogglePlaying: true }, 'playPause'), 'media maps playPause capability')
|
|
assert(media.canCycleSource({ identity: 'Spotify', canPlay: true }), 'media detects cycleable sources')
|
|
|
|
assert(media.isPlaybackStream({ isStream: true, type: 'Stream/Output/Audio' }), 'media detects playback streams')
|
|
assertEqual(media.streamLabelKey('PipeWire ALSA [Chromium]'), 'chromium', 'media normalizes stream labels')
|
|
assertEqual(
|
|
media.rawStreamLabel({ ready: true, properties: { 'application.name': 'Chromium' }, name: 'fallback' }),
|
|
'Chromium',
|
|
'media extracts raw stream labels'
|
|
)
|
|
assertEqual(
|
|
media.playerAppLabel({ dbusName: 'org.mpris.MediaPlayer2.spotify.instance42' }),
|
|
'spotify',
|
|
'media derives player app labels from DBus names'
|
|
)
|
|
assert(media.playerHasPlaybackStream(
|
|
{ desktopEntry: 'chromium' },
|
|
[{ ready: true, properties: { 'application.name': 'Chromium' } }]
|
|
), 'media matches players to playback streams')
|
|
|
|
assertEqual(media.playerKey({ dbusName: 'org.mpris.MediaPlayer2.spotify' }), 'org.mpris.MediaPlayer2.spotify', 'media derives stable player keys')
|
|
assertEqual(media.labelFor({ trackTitle: 'Song', identity: 'Spotify' }), 'Song', 'media labels players by track first')
|
|
assertEqual(media.osdMessage({ trackTitle: 'Song', trackArtist: 'Artist' }, 'Fallback'), 'Song - Artist', 'media builds OSD messages')
|
|
assertEqual(media.osdMessage(null, 'Fallback'), 'Fallback', 'media falls back OSD messages')
|
|
JS
|