async def test_metadata_tv_playing(self): self.usecase.tv_playing( paused=False, series_name="tv", total_time=40, position=10, season_number=12, episode_number=4, content_identifier="identifier", ) with faketime("pyatv", 0): playing = await self.playing(series_name="tv") self.assertEqual(playing.media_type, MediaType.Video) self.assertEqual(playing.device_state, DeviceState.Playing) self.assertEqual(playing.series_name, "tv") self.assertEqual(playing.total_time, 40) self.assertEqual(playing.position, 10) self.assertEqual(playing.season_number, 12) self.assertEqual(playing.episode_number, 4) self.assertEqual(playing.content_identifier, "identifier") self.assertFeatures( FeatureState.Available, FeatureName.SeriesName, FeatureName.TotalTime, FeatureName.Position, FeatureName.SeasonNumber, FeatureName.EpisodeNumber, FeatureName.ContentIdentifier, )
async def test_seek_in_playing_media(self): self.usecase.video_playing( paused=False, title="dummy", total_time=40, position=10 ) with faketime("pyatv", 0): await self.atv.remote_control.set_position(30) playing = await self.playing(position=30) self.assertEqual(playing.position, 30)
async def test_metadata_video_playing(self): self.usecase.video_playing( paused=False, title="video", total_time=40, position=10 ) with faketime("pyatv", 0): playing = await self.playing(title="video") self.assertEqual(playing.media_type, MediaType.Video) self.assertEqual(playing.device_state, DeviceState.Playing) self.assertEqual(playing.title, "video") self.assertEqual(playing.total_time, 40) self.assertEqual(playing.position, 10)
async def test_metadata_video_paused(self): self.usecase.video_playing( paused=True, title="dummy", total_time=100, position=3 ) with faketime("pyatv", 0): playing = await self.playing(title="dummy") self.assertEqual(playing.media_type, MediaType.Video) self.assertEqual(playing.device_state, DeviceState.Paused) self.assertEqual(playing.title, "dummy") self.assertEqual(playing.total_time, 100) self.assertEqual(playing.position, 3)
async def test_item_updates(self): self.usecase.video_playing( False, 'dummy', 100, 1, identifier='id', artist='some artist') with faketime('pyatv', 0): await self.playing(title='dummy') # Trigger update of single item by chaging title self.usecase.change_metadata(title='foobar', identifier='id') playing = await self.playing(title='foobar') # Make sure other metadata is untouched self.assertEqual(playing.title, 'foobar') self.assertEqual(playing.artist, 'some artist') self.assertEqual(playing.total_time, 100) self.assertEqual(playing.position, 1)
async def test_item_updates(self): self.usecase.video_playing( False, "dummy", 100, 1, identifier="id", artist="some artist" ) with faketime("pyatv", 0): await self.playing(title="dummy") # Trigger update of single item by changing title self.usecase.change_metadata(title="foobar", identifier="id") playing = await self.playing(title="foobar") # Make sure other metadata is untouched self.assertEqual(playing.title, "foobar") self.assertEqual(playing.artist, "some artist") self.assertEqual(playing.total_time, 100) self.assertEqual(playing.position, 1)
async def test_metadata_music_playing(self): self.usecase.music_playing(paused=False, title='music', artist='test1', album='test2', total_time=2, position=1, genre='genre') with faketime('pyatv', 0): playing = await self.playing(title='music') self.assertEqual(playing.media_type, MediaType.Music) self.assertEqual(playing.device_state, DeviceState.Playing) self.assertEqual(playing.title, 'music') self.assertEqual(playing.artist, 'test1') self.assertEqual(playing.album, 'test2') self.assertEqual(playing.genre, 'genre') self.assertEqual(playing.total_time, 2) self.assertEqual(playing.position, 1)
async def test_metadata_music_paused(self): self.usecase.music_playing(paused=True, title='music', artist='artist', album='album', total_time=222, position=49, genre='genre') with faketime('pyatv', 0): playing = await self.playing(title='music') self.assertEqual(playing.media_type, MediaType.Music) self.assertEqual(playing.device_state, DeviceState.Paused) self.assertEqual(playing.title, 'music') self.assertEqual(playing.artist, 'artist') self.assertEqual(playing.album, 'album') self.assertEqual(playing.genre, 'genre') self.assertEqual(playing.total_time, 222) self.assertEqual(playing.position, 49)
async def run_script(self, script, *args): argv = [script] + list(args) inputs = "\n".join(self.inputs) + "\n" with capture_output(argv, inputs) as (out, err): udns_port = str(self.fake_udns.port) with patch.dict("os.environ", {"PYATV_UDNS_PORT": udns_port}): with faketime("pyatv", 0): # Stub away port knocking and ignore result (not tested here) with patch("pyatv.support.knock.knock") as mock_knock: async def _no_action(*args): pass mock_knock.side_effect = _no_action module = import_module(f"pyatv.scripts.{script}") self.retcode = await module.appstart(self.loop) self.stdout = out.getvalue() self.stderr = err.getvalue()
async def test_metadata_tv_playing(self): self.usecase.tv_playing( paused=False, series_name="tv", total_time=40, position=10, season_number=12, episode_number=4, ) with faketime("pyatv", 0): playing = await self.playing(series_name="tv") self.assertEqual(playing.media_type, MediaType.Video) self.assertEqual(playing.device_state, DeviceState.Playing) self.assertEqual(playing.series_name, "tv") self.assertEqual(playing.total_time, 40) self.assertEqual(playing.position, 10) self.assertEqual(playing.season_number, 12) self.assertEqual(playing.episode_number, 4)
async def test_metadata_music_playing(self): self.usecase.music_playing( paused=False, title="music", artist="test1", album="test2", total_time=2, position=1, genre="genre", ) with faketime("pyatv", 0): playing = await self.playing(title="music") self.assertEqual(playing.media_type, MediaType.Music) self.assertEqual(playing.device_state, DeviceState.Playing) self.assertEqual(playing.title, "music") self.assertEqual(playing.artist, "test1") self.assertEqual(playing.album, "test2") self.assertEqual(playing.genre, "genre") self.assertEqual(playing.total_time, 2) self.assertEqual(playing.position, 1)
async def test_metadata_music_paused(self): self.usecase.music_playing( paused=True, title="music", artist="artist", album="album", total_time=222, position=49, genre="genre", ) with faketime("pyatv", 0): playing = await self.playing(title="music") self.assertEqual(playing.media_type, MediaType.Music) self.assertEqual(playing.device_state, DeviceState.Paused) self.assertEqual(playing.title, "music") self.assertEqual(playing.artist, "artist") self.assertEqual(playing.album, "album") self.assertEqual(playing.genre, "genre") self.assertEqual(playing.total_time, 222) self.assertEqual(playing.position, 49)