# 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"))