emmental/tests/mpris2/test_player.py

64 lines
2.5 KiB
Python

# Copyright 2022 (c) Anna Schumaker.
"""Tests our Mpris Player object."""
import pathlib
import unittest
import unittest.mock
import emmental.mpris2.player
from gi.repository import Gio
class TestPlayer(unittest.TestCase):
"""Test the mpris2 player object."""
def setUp(self):
"""Set up common variables."""
self.player = emmental.mpris2.player.Player()
def test_xml_files(self):
"""Test that the interface definition files exist."""
mpris2 = pathlib.Path(emmental.mpris2.__file__).parent
self.assertEqual(emmental.mpris2.player.PLAYER_XML,
mpris2 / "Player.xml")
self.assertTrue(emmental.mpris2.player.PLAYER_XML.is_file())
def test_init(self):
"""Test that the application object is configured correctly."""
self.assertIsInstance(self.player, emmental.mpris2.dbus.Object)
self.assertIsInstance(self.player.nodeinfo, Gio.DBusNodeInfo)
self.assertIsInstance(self.player.interface, Gio.DBusInterfaceInfo)
def test_properties(self):
"""Test Player properties."""
self.assertEqual(self.player.PlaybackStatus, "Stopped")
self.assertEqual(self.player.LoopStatus, "None")
self.assertEqual(self.player.Rate, 1.0)
self.assertFalse(self.player.Shuffle)
self.assertEqual(self.player.Volume, 1.0)
self.assertEqual(self.player.Position, 0)
self.assertDictEqual(self.player.Metadata, {})
self.assertEqual(self.player.MinimumRate, 1.0)
self.assertEqual(self.player.MaximumRate, 1.0)
self.assertFalse(self.player.CanGoNext)
self.assertFalse(self.player.CanGoPrevious)
self.assertFalse(self.player.CanPlay)
self.assertFalse(self.player.CanPause)
self.assertFalse(self.player.CanSeek)
self.assertTrue(self.player.CanControl)
def test_signals(self):
"""Test that Player signals exist."""
self.player.emit("Next")
self.player.emit("Previous")
self.player.emit("Pause")
self.player.emit("PlayPause")
self.player.emit("Stop")
self.player.emit("Play")
self.player.emit("Seek", 12345)
self.player.emit("SetPosition",
"/com/nowheycreamery/emmental/123", 12345)
open_path = unittest.mock.Mock()
self.player.connect("OpenPath", open_path)
self.player.emit("OpenUri", "/a/b/c.ogg")
open_path.assert_called_with(self.player, pathlib.Path("/a/b/c.ogg"))