97 lines
3.5 KiB
Python
97 lines
3.5 KiB
Python
from collections import OrderedDict
|
|
|
|
from django.urls import reverse
|
|
|
|
from funkwhale_api.providers.youtube.client import client
|
|
|
|
from .data import youtube as api_data
|
|
|
|
|
|
def test_can_get_search_results_from_youtube(mocker):
|
|
mocker.patch(
|
|
"funkwhale_api.providers.youtube.client._do_search",
|
|
return_value=api_data.search["8 bit adventure"],
|
|
)
|
|
query = "8 bit adventure"
|
|
results = client.search(query)
|
|
assert results[0]["id"]["videoId"] == "0HxZn6CzOIo"
|
|
assert results[0]["snippet"]["title"] == "AdhesiveWombat - 8 Bit Adventure"
|
|
assert results[0]["full_url"] == "https://www.youtube.com/watch?v=0HxZn6CzOIo"
|
|
|
|
|
|
def test_can_get_search_results_from_funkwhale(preferences, mocker, api_client, db):
|
|
preferences["common__api_authentication_required"] = False
|
|
mocker.patch(
|
|
"funkwhale_api.providers.youtube.client._do_search",
|
|
return_value=api_data.search["8 bit adventure"],
|
|
)
|
|
query = "8 bit adventure"
|
|
url = reverse("api:v1:providers:youtube:search")
|
|
response = api_client.get(url, {"query": query})
|
|
# we should cast the youtube result to something more generic
|
|
expected = {
|
|
"id": "0HxZn6CzOIo",
|
|
"url": "https://www.youtube.com/watch?v=0HxZn6CzOIo",
|
|
"type": "youtube#video",
|
|
"description": "Description",
|
|
"channelId": "UCps63j3krzAG4OyXeEyuhFw",
|
|
"title": "AdhesiveWombat - 8 Bit Adventure",
|
|
"channelTitle": "AdhesiveWombat",
|
|
"publishedAt": "2012-08-22T18:41:03.000Z",
|
|
"cover": "https://i.ytimg.com/vi/0HxZn6CzOIo/hqdefault.jpg",
|
|
}
|
|
|
|
assert response.data[0] == expected
|
|
|
|
|
|
def test_can_send_multiple_queries_at_once(mocker):
|
|
mocker.patch(
|
|
"funkwhale_api.providers.youtube.client._do_search",
|
|
side_effect=[
|
|
api_data.search["8 bit adventure"],
|
|
api_data.search["system of a down toxicity"],
|
|
],
|
|
)
|
|
|
|
queries = OrderedDict()
|
|
queries["1"] = {"q": "8 bit adventure"}
|
|
queries["2"] = {"q": "system of a down toxicity"}
|
|
|
|
results = client.search_multiple(queries)
|
|
|
|
assert results["1"][0]["id"]["videoId"] == "0HxZn6CzOIo"
|
|
assert results["1"][0]["snippet"]["title"] == "AdhesiveWombat - 8 Bit Adventure"
|
|
assert results["1"][0]["full_url"] == "https://www.youtube.com/watch?v=0HxZn6CzOIo"
|
|
assert results["2"][0]["id"]["videoId"] == "BorYwGi2SJc"
|
|
assert results["2"][0]["snippet"]["title"] == "System of a Down: Toxicity"
|
|
assert results["2"][0]["full_url"] == "https://www.youtube.com/watch?v=BorYwGi2SJc"
|
|
|
|
|
|
def test_can_send_multiple_queries_at_once_from_funwkhale(
|
|
preferences, mocker, db, api_client
|
|
):
|
|
preferences["common__api_authentication_required"] = False
|
|
mocker.patch(
|
|
"funkwhale_api.providers.youtube.client._do_search",
|
|
return_value=api_data.search["8 bit adventure"],
|
|
)
|
|
queries = OrderedDict()
|
|
queries["1"] = {"q": "8 bit adventure"}
|
|
|
|
expected = {
|
|
"id": "0HxZn6CzOIo",
|
|
"url": "https://www.youtube.com/watch?v=0HxZn6CzOIo",
|
|
"type": "youtube#video",
|
|
"description": "Description",
|
|
"channelId": "UCps63j3krzAG4OyXeEyuhFw",
|
|
"title": "AdhesiveWombat - 8 Bit Adventure",
|
|
"channelTitle": "AdhesiveWombat",
|
|
"publishedAt": "2012-08-22T18:41:03.000Z",
|
|
"cover": "https://i.ytimg.com/vi/0HxZn6CzOIo/hqdefault.jpg",
|
|
}
|
|
|
|
url = reverse("api:v1:providers:youtube:searchs")
|
|
response = api_client.post(url, queries, format="json")
|
|
|
|
assert expected == response.data["1"][0]
|