def test_server_sends_time_to_client(): """ Check that the server sends data to the clients. """ player = MediaPlayer() player.get_current_playlist_position = MagicMock(return_value=1) assert_called_in_infinite_loop('media_player.MediaPlayer.get_current_time', player.sync_to_server) with pytest.raises(AssertionError): player.get_current_playlist_position = MagicMock(return_value=None) assert_called_in_infinite_loop( 'media_player.MediaPlayer.get_current_time', player.sync_to_server)
def test_client_playlist_position_set_without_drift(): """ Check that a client's playlist position is set even if the client hasn't drifted from the server. """ player = MediaPlayer() player.client.receive = MagicMock(return_value=[2, 95]) player.get_current_time = MagicMock(return_value=100) player.get_current_playlist_position = MagicMock(return_value=1) player.vlc['player'].get_length = MagicMock(return_value=3000) assert_called_in_infinite_loop('vlc.MediaListPlayer.play_item_at_index', player.sync_to_server) with pytest.raises(AssertionError): # Assert playlist sync isn't called player.get_current_playlist_position = MagicMock(return_value=2) assert_called_in_infinite_loop( 'vlc.MediaListPlayer.play_item_at_index', player.sync_to_server)
def test_client_drifts_from_server_sets_playlist_position(): """ Check that if the time drifts on a server playing a playlist, the client calls play_item_at_index on its player. """ player = MediaPlayer() player.client.receive = MagicMock(return_value=[2, 50]) player.get_current_time = MagicMock(return_value=100) player.get_current_playlist_position = MagicMock(return_value=1) player.vlc['player'].get_length = MagicMock(return_value=3000) assert_called_in_infinite_loop('vlc.MediaListPlayer.play_item_at_index', player.sync_to_server)
def test_client_drifts_from_server(): """ Check that if the time drifts, the client calls set_time on its player. """ player = MediaPlayer() player.client.receive = MagicMock(return_value=[1, 50]) player.get_current_time = MagicMock(return_value=100) player.get_current_playlist_position = MagicMock(return_value=1) player.vlc['player'].get_length = MagicMock(return_value=3000) assert_called_in_infinite_loop('vlc.MediaPlayer.set_time', player.sync_to_server) with pytest.raises(AssertionError): # Assert playlist sync isn't called assert_called_in_infinite_loop( 'vlc.MediaListPlayer.play_item_at_index', player.sync_to_server) # Assert sync isn't called within 2 seconds of the end of the current video with pytest.raises(AssertionError): player.client.receive = MagicMock(return_value=[1, 2500]) player.get_current_time = MagicMock(return_value=2000) assert_called_in_infinite_loop('vlc.MediaPlayer.set_time', player.sync_to_server)