def test_build_queries_with_sorts(self): spl = SmartPlaylistPlugin() config['smartplaylist']['playlists'].set([ {'name': u'no_sort', 'query': u'foo'}, {'name': u'one_sort', 'query': u'foo year+'}, {'name': u'only_empty_sorts', 'query': [u'foo', u'bar']}, {'name': u'one_non_empty_sort', 'query': [u'foo year+', u'bar']}, {'name': u'multiple_sorts', 'query': [u'foo year+', u'bar genre-']}, {'name': u'mixed', 'query': [u'foo year+', u'bar', u'baz genre+ id-']} ]) spl.build_queries() sorts = dict((name, sort) for name, (_, sort), _ in spl._unmatched_playlists) asseq = self.assertEqual # less cluttered code S = FixedFieldSort # short cut since we're only dealing with this asseq(sorts["no_sort"], NullSort()) asseq(sorts["one_sort"], S(u'year')) asseq(sorts["only_empty_sorts"], None) asseq(sorts["one_non_empty_sort"], S(u'year')) asseq(sorts["multiple_sorts"], MultipleSort([S('year'), S(u'genre', False)])) asseq(sorts["mixed"], MultipleSort([S('year'), S(u'genre'), S(u'id', False)]))
def test_build_queries_with_sorts(self): spl = SmartPlaylistPlugin() config['smartplaylist']['playlists'].set([ {'name': 'no_sort', 'query': 'foo'}, {'name': 'one_sort', 'query': 'foo year+'}, {'name': 'only_empty_sorts', 'query': ['foo', 'bar']}, {'name': 'one_non_empty_sort', 'query': ['foo year+', 'bar']}, {'name': 'multiple_sorts', 'query': ['foo year+', 'bar genre-']}, {'name': 'mixed', 'query': ['foo year+', 'bar', 'baz genre+ id-']} ]) spl.build_queries() sorts = dict((name, sort) for name, (_, sort), _ in spl._unmatched_playlists) asseq = self.assertEqual # less cluttered code S = FixedFieldSort # short cut since we're only dealing with this asseq(sorts["no_sort"], NullSort()) asseq(sorts["one_sort"], S('year')) asseq(sorts["only_empty_sorts"], None) asseq(sorts["one_non_empty_sort"], S('year')) asseq(sorts["multiple_sorts"], MultipleSort([S('year'), S('genre', False)])) asseq(sorts["mixed"], MultipleSort([S('year'), S('genre'), S('id', False)]))
def test_build_queries(self): spl = SmartPlaylistPlugin() self.assertEqual(spl._matched_playlists, None) self.assertEqual(spl._unmatched_playlists, None) config['smartplaylist']['playlists'].set([]) spl.build_queries() self.assertEqual(spl._matched_playlists, set()) self.assertEqual(spl._unmatched_playlists, set()) config['smartplaylist']['playlists'].set([ {'name': u'foo', 'query': u'FOO foo'}, {'name': u'bar', 'album_query': [u'BAR bar1', u'BAR bar2']}, {'name': u'baz', 'query': u'BAZ baz', 'album_query': u'BAZ baz'} ]) spl.build_queries() self.assertEqual(spl._matched_playlists, set()) foo_foo = parse_query_string(u'FOO foo', Item) baz_baz = parse_query_string(u'BAZ baz', Item) baz_baz2 = parse_query_string(u'BAZ baz', Album) bar_bar = OrQuery((parse_query_string(u'BAR bar1', Album)[0], parse_query_string(u'BAR bar2', Album)[0])) self.assertEqual(spl._unmatched_playlists, set([ (u'foo', foo_foo, (None, None)), (u'baz', baz_baz, baz_baz2), (u'bar', (None, None), (bar_bar, None)), ]))
def test_build_queries(self): spl = SmartPlaylistPlugin() self.assertEqual(spl._matched_playlists, None) self.assertEqual(spl._unmatched_playlists, None) config['smartplaylist']['playlists'].set([]) spl.build_queries() self.assertEqual(spl._matched_playlists, set()) self.assertEqual(spl._unmatched_playlists, set()) config['smartplaylist']['playlists'].set([ {'name': 'foo', 'query': 'FOO foo'}, {'name': 'bar', 'album_query': ['BAR bar1', 'BAR bar2']}, {'name': 'baz', 'query': 'BAZ baz', 'album_query': 'BAZ baz'} ]) spl.build_queries() self.assertEqual(spl._matched_playlists, set()) foo_foo = parse_query_string('FOO foo', Item) baz_baz = parse_query_string('BAZ baz', Item) baz_baz2 = parse_query_string('BAZ baz', Album) bar_bar = OrQuery((parse_query_string('BAR bar1', Album)[0], parse_query_string('BAR bar2', Album)[0])) self.assertEqual(spl._unmatched_playlists, set([ ('foo', foo_foo, (None, None)), ('baz', baz_baz, baz_baz2), ('bar', (None, None), (bar_bar, None)), ]))