From 4fa6e3fe81340bc4e627780129ae767c063b5a27 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pierre=20St=C3=A5hl?= Date: Tue, 26 Sep 2017 18:44:32 +0200 Subject: [PATCH] Add tests for new play_state logic --- pyatv/__init__.py | 2 +- pyatv/airplay/player.py | 2 +- tests/airplay/test_airplay.py | 14 ++++++++++---- tests/fake_daap_atv.py | 5 +++++ 4 files changed, 17 insertions(+), 6 deletions(-) diff --git a/pyatv/__init__.py b/pyatv/__init__.py index 7943a013a..edce81fc6 100755 --- a/pyatv/__init__.py +++ b/pyatv/__init__.py @@ -189,7 +189,7 @@ def _get_service_used_to_connect(details, protocol): def _setup_airplay(loop, session, details): airplay_service = details.airplay_service() airplay_player = player.AirPlayPlayer( - loop, session, details.address, airplay_service.port) + loop, details.address, airplay_service.port) airplay_http = HttpSession( session, 'http://{0}:{1}/'.format( details.address, airplay_service.port)) diff --git a/pyatv/airplay/player.py b/pyatv/airplay/player.py index 6700625d2..b5fc8d1f9 100644 --- a/pyatv/airplay/player.py +++ b/pyatv/airplay/player.py @@ -23,7 +23,7 @@ class AirPlayPlayer: """This class helps with playing media from an URL.""" - def __init__(self, loop, session, address, port=7000): + def __init__(self, loop, address, port=7000): """Initialize a new AirPlay instance.""" self.loop = loop self.address = address diff --git a/tests/airplay/test_airplay.py b/tests/airplay/test_airplay.py index 1ae003c66..3d45f0d53 100644 --- a/tests/airplay/test_airplay.py +++ b/tests/airplay/test_airplay.py @@ -3,7 +3,6 @@ import asyncio from tests.log_output_handler import LogOutputHandler -from aiohttp import ClientSession from aiohttp.test_utils import (AioHTTPTestCase, unittest_run_loop) from pyatv.airplay import player @@ -53,13 +52,20 @@ def test_play_video(self): self.usecase.airplay_playback_playing() self.usecase.airplay_playback_idle() - session = ClientSession(loop=self.loop) aplay = player.AirPlayPlayer( - self.loop, session, '127.0.0.1', port=self.app.port) + self.loop, '127.0.0.1', port=self.app.port) yield from aplay.play_url(STREAM, position=START_POSITION) self.assertEqual(self.fake_atv.last_airplay_url, STREAM) self.assertEqual(self.fake_atv.last_airplay_start, START_POSITION) self.assertEqual(self.no_of_sleeps, 2) # playback + idle = 3 - session.close() + @unittest_run_loop + def test_play_when_device_not_ready(self): + self.usecase.airplay_playback_not_ready() + + aplay = player.AirPlayPlayer( + self.loop, '127.0.0.1', port=self.app.port) + yield from aplay.play_url(STREAM, position=START_POSITION) + + self.assertEqual(self.no_of_sleeps, 0) diff --git a/tests/fake_daap_atv.py b/tests/fake_daap_atv.py index 88506c2bc..5b96f2e76 100644 --- a/tests/fake_daap_atv.py +++ b/tests/fake_daap_atv.py @@ -477,6 +477,11 @@ def airplay_playback_idle(self): self.device.responses['airplay_playback'].insert( 0, AirPlayPlaybackResponse(plistlib.dumps(plist))) + def airplay_playback_not_ready(self): + """Make playback-info return device not being ready.""" + self.device.responses['airplay_playback'].insert( + 0, AirPlayPlaybackResponse(plistlib.dumps(dict()))) + def set_property(self, prop, value): """Change value of a property.""" # Use "fictional" properties to not tie them to DAP (if some other