Example #1
0
    def test_shows_add_to_queue_if_playing(self):
        ps = self.get_playlist_selected()

        self.navigator.player.is_playing.return_value = False
        options = menus.Options(ps.get_options())

        destinations = [value.destination for value in options.values()]
        self.assertNotIn(ps.add_to_queue, destinations)

        self.navigator.player.is_playing.return_value = True
        options = menus.Options(ps.get_options())

        destinations = [value.destination for value in options.values()]
        self.assertIn(ps.add_to_queue, destinations)
Example #2
0
    def test_playlist_overview_shows_invalid_playlists_as_well(self):
        self.playlists = [
            utils.Playlist('', []),
            utils.Playlist('A', [utils.Track('foo', ['bar'])]),
            utils.Playlist('B', []),
            utils.Playlist('C',
                           [utils.Track('foo', ['bar'], available=False)]),
            utils.Playlist('D', []),
        ]
        del self.playlists[1].link

        class Session(object):
            playlist_container = self.playlists

        self.navigator.session = Session()
        pov = menus.PlayListOverview(self.navigator)
        pov.disable_loader()
        pov.loader = MockLoader([[item, {}] for item in self.playlists])
        options = menus.Options(pov.get_options())
        self.assertEqual(len(options), 5)
        all_playlist_options = [
            t.destination.playlist for t in list(options.values())
        ]
        for playlist in self.playlists:
            self.assertIn(playlist, all_playlist_options)
Example #3
0
    def test_playlist_selected_contains_only_valid_tracks(self):
        ps = self.get_playlist_selected()
        options = menus.Options(ps.get_options())

        self.assertIsNotNone(options.match_best_or_none('1'))
        self.assertIsNotNone(options.match_best_or_none('2'))
        self.assertIsNotNone(options.match_best_or_none('3'))
        self.assertIsNone(options.match_best_or_none('4'))
Example #4
0
 def test_check_unique_keys(self):
     with self.assertRaises(TypeError):
         menus.Options({
             'a': menus.MenuValue('p', Mock()),
             ' a': menus.MenuValue('k', Mock())
         })
     with self.assertRaises(TypeError):
         self.op['   1'] = menus.MenuValue('1', Mock())
Example #5
0
 def test_fuzzy_filter(self):
     dct = {'1': menus.MenuValue('This is a playlist', Mock())}
     op = menus.Options(dct)
     should_match = (
         'ThisIsAPlaylist',
         'ThisPlaylist',
         'tiaplay',
     )
     for _filter in should_match:
         self.assertEqual(len(op.filter(_filter)), 1)
Example #6
0
 def test_possiblities_with_spaces(self):
     op = menus.Options({
         '    a': menus.MenuValue('p', Mock()),
         'b    ': menus.MenuValue('p', Mock()),
         '    c    ': menus.MenuValue('p', Mock()),
     })
     for key in 'a', 'b', 'c':
         tc = op.get_possibilities(key)
         self.assertEqual(len(tc), 1)
         self.assertNotEqual(tc, [key])
         self.assertIn(key, tc[0])
Example #7
0
 def test_matches_by_correct_key(self):
     op = menus.Options({
         'k': menus.MenuValue('1', Mock()),
         'kk': menus.MenuValue('2', Mock()),
         'kkk': menus.MenuValue('3', Mock()),
     })
     best = op.match_best_or_none('k')
     self.assertEqual(best.name, '1')
     best = op.match_best_or_none('kk')
     self.assertEqual(best.name, '2')
     best = op.match_best_or_none('kkk')
     self.assertEqual(best.name, '3')
Example #8
0
 def setUp(self):
     self.dct = {
         '1': menus.MenuValue('A', Mock()),
         '2': menus.MenuValue('B', Mock()),
         '3': menus.MenuValue('C', Mock()),
         's': menus.MenuValue('Search', Mock()),
         'kk': menus.MenuValue('pp', Mock()),
         'ko': menus.MenuValue('p', Mock()),
         'q': menus.MenuValue('o', Mock()),
         'o': menus.MenuValue('q', Mock()),
     }
     self.op = menus.Options(self.dct)
Example #9
0
 def test_matches_by_correct_padded_key(self):
     op = menus.Options({
         '    a': menus.MenuValue('1', Mock()),
         'b    ': menus.MenuValue('2', Mock()),
         '    c    ': menus.MenuValue('3', Mock()),
         ' s i ': menus.MenuValue('4', Mock()),
     })
     best = op.match_best_or_none('a')
     self.assertEqual(best.name, '1')
     best = op.match_best_or_none('b')
     self.assertEqual(best.name, '2')
     best = op.match_best_or_none('c')
     self.assertEqual(best.name, '3')
     best = op.match_best_or_none('si')
     self.assertEqual(best.name, '4')
Example #10
0
    def test_shows_indicator_if_one_match(self):
        self.submenu.filter = 'a'
        self.submenu.get_options = Mock()
        self.submenu.get_options.return_value = menus.Options({
            'the_key':
            menus.MenuValue('sindri', Mock()),
            'foo':
            menus.MenuValue('foo', Mock()),
            'bar':
            menus.MenuValue('bar', Mock()),
        })
        self.submenu.initialize()

        ui = self.submenu.get_ui()
        self.assertEqual(len([line for line in ui if 'sindri' in line]), 1)
        self.submenu.filter = 'the_key'
        ui = self.submenu.get_ui()
        self.assertEqual(len([line for line in ui if 'sindri' in line]), 2)
Example #11
0
    def test_playlist_overview_shows_all_playlists(self):
        self.playlists = [
            utils.Playlist('A', [utils.Track('foo', ['bar'])]),
            utils.Playlist('B', [utils.Track('foo', ['bar'])]),
            utils.Playlist('C', [utils.Track('foo', ['bar'])]),
        ]

        class Session(object):
            playlist_container = self.playlists

        self.navigator.session = Session()
        pov = menus.PlayListOverview(self.navigator)
        options = menus.Options(pov.get_options())
        self.assertTrue(
            all(
                isinstance(value.destination, menus.PlayListSelected)
                for value in options.values()))
        for playlist in self.playlists:
            self.assertIsNotNone(options.match_best_or_none(playlist.name))
Example #12
0
    def test_playlist_overview_does_not_show_invalid_playlists(self):
        self.playlists = [
            # This is the only one that should be shown
            utils.Playlist('A', [utils.Track('foo', ['bar'])]),
            utils.Playlist('B', []),
            utils.Playlist('C',
                           [utils.Track('foo', ['bar'], available=False)]),
            utils.Playlist('D', []),
            utils.Playlist('', []),
        ]
        del self.playlists[1].link

        class Session(object):
            playlist_container = self.playlists

        self.navigator.session = Session()
        pov = menus.PlayListOverview(self.navigator)
        options = menus.Options(pov.get_options())
        self.assertEqual(len(options), 1)
        self.assertEqual(
            list(options.values())[0].destination.playlist, self.playlists[0])
Example #13
0
    def test_shows_shuffle_play(self):
        ps = self.get_playlist_selected()
        options = menus.Options(ps.get_options())

        destinations = [value.destination for value in options.values()]
        self.assertIn(ps.shuffle_play, destinations)