def test_get_options(self): menu = menus.TrackSearchResults(self.navigator) menu.search = Mock() menu.search.results.previous_page = True menu.search.results.next_page = True menu.search.results.offset = 1 menu.search.results.results = [] menu.paginating = True self.assertEqual(len(menu.get_options()), 0) menu.paginating = False # Last page, next page self.assertEqual(len(menu.get_options()), 2) menu.search.results.previous_page = False # Only next page self.assertEqual(len(menu.get_options()), 1) menu.search.results.next_page = False self.assertEqual(len(menu.get_options()), 0) menu.search.results.results = [utils.Track('foo', 'bar')] # Shuffle and the song itself self.assertEqual(len(menu.get_options()), 2)
def test_resets_paginating(self, patched_search): patched_search.loaded_event.wait.return_value = True menu = menus.TrackSearchResults(self.navigator) menu.paginating = True self.assertEqual(menu.get_response(), menu) self.assertFalse(menu.paginating) patched_search.loaded_event.wait.assert_called_once_with()
def test_get_update_cache(self): search = 'foobar' menu = menus.TrackSearchResults(self.navigator) self.assertEqual(len(menu.get_cache()), 0) menu.search = search menu.update_cache() self.assertIn(search, menu.get_cache())
def test_returns_different_ui_while_paginating(self, patched_get_ui): menu = menus.TrackSearchResults(self.navigator) first_one = menu.get_ui() menu.paginating = True second_one = menu.get_ui() self.assertNotEqual(first_one, second_one) patched_get_ui.assert_called_once_with()
def test_select_song_while_playing(self, patched_self_search): patched_self_search.results.results = ['foo'] self.navigator.player.is_playing.return_value = True menu = menus.TrackSearchResults(self.navigator) callback = menu.select_song(0) self.assertTrue(callable(callback)) res = callback() self.assertIsInstance(res, menus.SongSelectedWhilePlaying) self.assertEqual(res.track, 'foo')
def test_go_to_from_search(self, patched_cache, patched_search, patched_update): patched_cache.return_value = [Mock()] patched_search.return_value = Mock() menu = menus.TrackSearchResults(self.navigator) menu.search = patched_cache.return_value[0] callback = menu.go_to(1) self.assertTrue(callable(callback)) self.assertEqual(callback(), menu) self.assertEqual(menu.search, patched_search.return_value) self.assertTrue(menu.paginating) patched_update.assert_called_once_with() # Don't check for how it was called, at least not at the moment self.assertEqual(patched_search.call_count, 1)
def test_go_to_from_cache(self, patched_cache, patched_search, patched_update): patched_cache.return_value = [Mock(), Mock()] menu = menus.TrackSearchResults(self.navigator) menu.search = patched_cache.return_value[0] # next_page callback = menu.go_to(1) self.assertEqual(callback(), menu) self.assertEqual(menu.search, patched_cache.return_value[1]) self.assertTrue(menu.paginating) patched_update.assert_not_called() patched_search.assert_not_called() # previous_page callback = menu.go_to(-1) self.assertTrue(callable(callback)) self.assertEqual(callback(), menu) self.assertEqual(menu.search, patched_cache.return_value[0]) self.assertTrue(menu.paginating) patched_update.assert_not_called() patched_search.assert_not_called()
def test_get_res_idx(self, patched_self_search): menu = menus.TrackSearchResults(self.navigator) for i in range(0, 5, 20): patched_self_search.results.offset = i self.assertEqual(menu.get_res_idx(0), i + 1)
def test_mock_playlist_contains_term_in_search(self): menu = menus.TrackSearchResults(self.navigator) menu.search = Mock() menu.search.results.term = 'foobar' self.assertIn('foobar', menu.get_mock_playlist_name())
def test_updates_cache_on_init(self, patched_update): search = 'foobar' menu = menus.TrackSearchResults(self.navigator) menu.set_initial_results(search) patched_update.assert_called_once_with()