def test_playlists(self): # test sending TabInfo updates for playlists # test initial item creation # only playlists with items should be created self.share.start_tracking() self.MockTabsChanged.reset_mock() self.client.set_items(self.make_daap_items( {1: 'title-1', 2: 'title-2'})) self.client.add_playlist( testobjects.make_mock_daap_playlist(101, 'playlist-1') ) self.client.add_playlist( testobjects.make_mock_daap_playlist(102, 'playlist-2') ) self.client.add_playlist( testobjects.make_mock_daap_playlist(103, 'playlist-3') ) self.client.set_playlist_items(101, [1]) self.client.set_playlist_items(102, [1, 2]) self.check_client_connect() self.check_tabs_changed([101, 102], [], []) # check updating playlists self.client.add_playlist( testobjects.make_mock_daap_playlist(104, 'playlist-4') ) self.client.set_playlist_items(104, [1, 2]) self.client.add_playlist( testobjects.make_mock_daap_playlist(102, 'new-playlist-2', is_podcast=True) ) self.check_client_update() self.check_tabs_changed([104], [102], []) # check playlist deletion self.client.remove_playlist(101) # 102 gets removed because of no items self.client.set_playlist_items(102, []) # 103 is not removed because it never contained items self.client.remove_playlist(103) self.check_client_update() self.check_tabs_changed([], [], [101, 102]) # check that adding items to an empty playlist results in it being # added self.client.set_playlist_items(102, [1]) self.check_client_update() self.check_tabs_changed([102], [], [])
def test_disconnect_removes_playlists(self): # test that playlist tabs get after the client disconnects self.share.start_tracking() self.MockTabsChanged.reset_mock() self.client.set_items(self.make_daap_items( {1: 'title-1', 2: 'title-2'})) self.client.add_playlist( testobjects.make_mock_daap_playlist(101, 'playlist-1') ) self.client.add_playlist( testobjects.make_mock_daap_playlist(102, 'playlist-2') ) self.client.set_playlist_items(101, [1]) self.check_client_connect() self.check_tabs_changed([101], [], []) # run the code that happens after the tracker disconnects # playlist 1 should be removed. playlist 2 was never added, so it # shouldn't be in the message. self.share.tracker.client_disconnect_callback_common() self.check_tabs_changed([], [], [101])
def test_nul_in_playlist_data(self): # test that we remove NUL chars from playlist data (#17537) self.share.start_tracking() self.MockTabsChanged.reset_mock() self.client.set_items(self.make_daap_items({1: 'title-1'})) self.client.add_playlist( testobjects.make_mock_daap_playlist(101, 'playlist-\0\0one\0')) self.client.set_playlist_items(101, [1]) self.share.tracker.client_connect_callback( self.share.tracker.client_connect()) type_, added, changed, removed = self.MockTabsChanged.call_args[0] self.assertEquals(added[0].name, "playlist-one")
def test_nul_in_playlist_data(self): # test that we remove NUL chars from playlist data (#17537) self.share.start_tracking() self.MockTabsChanged.reset_mock() self.client.set_items(self.make_daap_items({1: 'title-1'})) self.client.add_playlist( testobjects.make_mock_daap_playlist(101, 'playlist-\0\0one\0') ) self.client.set_playlist_items(101, [1]) self.share.tracker.client_connect_callback( self.share.tracker.client_connect()) type_, added, changed, removed = self.MockTabsChanged.call_args[0] self.assertEquals(added[0].name, "playlist-one")
def test_playlist_filter(self): self.client.add_playlist( testobjects.make_mock_daap_playlist(3001, 'playlist')) self.client.set_playlist_items(3001, [1001, 1002]) self.run_client_update() query = itemtrack.SharingItemTrackerQuery() query.add_condition('sharing_item_playlist_map.playlist_id', '=', 3001) query.set_order_by(['title']) self.tracker.change_query(query) self.check_list(self.video1, self.video2) # test changes self.client.set_playlist_items(3001, [1001, 1002, 2001]) self.run_client_update() self.process_items_changed_messages() self.check_list(self.audio1, self.video1, self.video2)
def test_playlist_filter(self): self.client.add_playlist( testobjects.make_mock_daap_playlist(3001, 'playlist') ) self.client.set_playlist_items(3001, [1001, 1002]) self.run_client_update() query = itemtrack.SharingItemTrackerQuery() query.add_condition('sharing_item_playlist_map.playlist_id', '=', 3001) query.set_order_by(['title']) self.tracker.change_query(query) self.check_list(self.video1, self.video2) # test changes self.client.set_playlist_items(3001, [1001, 1002, 2001]) self.run_client_update() self.process_items_changed_messages() self.check_list(self.audio1, self.video1, self.video2)