def test_query_genre_works(self, ptr_array, query_model): item = Mock() array, model = Mock(), ModelStub(item) query_model.return_value = model ptr_array.return_value = array rb = RBHandler(self.shell) rb.query({"genre": "a nice genre"}) self.db.do_full_query_parsed.assert_called_with(model, array) self.db.query_append_params.assert_has_calls([call(array, "FUZZY", "GENRE_FOLDED", "a nice genre")])
def test_query_artist_works(self, ptr_array, query_model): item = Mock() array, model = Mock(), ModelStub(item) query_model.return_value = model ptr_array.return_value = array rb = RBHandler(self.shell) rb.query({"artist": "calabazas"}) self.db.do_full_query_parsed.assert_called_with(model, array) self.db.query_append_params.assert_has_calls([call(array, "FUZZY", "ARTIST_FOLDED", "calabazas")])
def test_query_with_rating_exact_match_and_play_count(self, ptr_array, query_model): item = Mock() array, model = Mock(), ModelStub(item) query_model.return_value = model ptr_array.return_value = array rb = RBHandler(self.shell) rb.query({"rating": 5, "play_count": 2, "exact-match": True, "first": 3, "limit": 1}) self.assertEquals(model.sort_order, "album_sort_func") self.assertFalse(model.desc) self.db.do_full_query_parsed.assert_called_with(model, array) self.db.query_append_params.assert_has_calls( [ call(array, "EQUALS", "TYPE", "song"), call(array, "GREATER_THAN", "rating", 5.0), call(array, "GREATER_THAN", "play_count", 2), ] )
def test_query_for_all_works(self, ptr_array, query_model): item = Mock() array, model = Mock(), ModelStub(item) query_model.return_value = model ptr_array.return_value = array rb = RBHandler(self.shell) rb.query({"all": "calabazas"}) self.db.do_full_query_parsed.assert_called_with(model, array) self.db.query_append_params.assert_has_calls( [ call(array, "EQUALS", "TYPE", "song"), call(array, "FUZZY", "ARTIST_FOLDED", "calabazas"), call(array, "EQUALS", "TYPE", "song"), call(array, "FUZZY", "TITLE_FOLDED", "calabazas"), call(array, "EQUALS", "TYPE", "song"), call(array, "FUZZY", "ALBUM_FOLDED", "calabazas"), call(array, "EQUALS", "TYPE", "song"), call(array, "FUZZY", "GENRE_FOLDED", "calabazas"), ] )
def test_query_with_invalid_type_fails(self, ptr_array, query_model): rb = RBHandler(self.shell) with self.assertRaises(InvalidQueryException): rb.query({"type": "x"})
def test_search_with_null_filters_returns_empty_list(self, ptr_array, query_model): rb = RBHandler(self.shell) result = rb.query(None) self.assertListEqual(result, [])