Example #1
0
    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], [], [])
Example #2
0
 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])
Example #3
0
 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")
Example #4
0
 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")
Example #5
0
 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)
Example #6
0
 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)