mirror of
https://github.com/beetbox/beets.git
synced 2025-12-07 09:04:33 +01:00
152 lines
6.4 KiB
Python
152 lines
6.4 KiB
Python
"""Tests for the 'spotify' plugin"""
|
|
|
|
from _common import unittest
|
|
import _common
|
|
from beets import config
|
|
from beets.library import Item
|
|
from beetsplug import spotify
|
|
from helper import TestHelper
|
|
import requests, responses
|
|
from requests.exceptions import HTTPError
|
|
|
|
class ArgumentsMock(object):
|
|
def __init__(self, mode, show_failures):
|
|
self.mode = mode
|
|
self.show_failures = show_failures
|
|
self.verbose = True
|
|
|
|
class SpotifyPluginTest(_common.TestCase, TestHelper):
|
|
|
|
def setUp(self):
|
|
config.clear()
|
|
self.setup_beets()
|
|
self.spotify = spotify.SpotifyPlugin()
|
|
opts = ArgumentsMock("list", False)
|
|
self.spotify.parse_opts(opts)
|
|
|
|
def tearDown(self):
|
|
self.teardown_beets()
|
|
|
|
def test_args(self):
|
|
opts = ArgumentsMock("fail", True)
|
|
self.assertEqual(False, self.spotify.parse_opts(opts))
|
|
opts = ArgumentsMock("list", False)
|
|
self.assertEqual(True, self.spotify.parse_opts(opts))
|
|
|
|
def test_empty_query(self):
|
|
self.assertEqual(None, self.spotify.query_spotify(self.lib, "1=2"))
|
|
|
|
def test_missing_request(self):
|
|
response_body = """{
|
|
"tracks" : {
|
|
"href" : "https://api.spotify.com/v1/search?query=duifhjslkef+album%3Alkajsdflakjsd+artist%3A&offset=0&limit=20&type=track",
|
|
"items" : [ ],
|
|
"limit" : 20,
|
|
"next" : null,
|
|
"offset" : 0,
|
|
"previous" : null,
|
|
"total" : 0
|
|
}
|
|
}"""
|
|
responses.add(responses.GET,
|
|
'https://api.spotify.com/v1/search?q=duifhjslkef+album%3Alkajsdflakjsd+artist%3A&type=track',
|
|
body=response_body, status=200,
|
|
content_type='application/json')
|
|
item = Item(
|
|
mb_trackid='01234',
|
|
album='lkajsdflakjsd',
|
|
albumartist='ujydfsuihse',
|
|
title='duifhjslkef',
|
|
length=10
|
|
)
|
|
item.add(self.lib)
|
|
self.assertEquals([], self.spotify.query_spotify(self.lib, ""))
|
|
|
|
def test_track_request(self):
|
|
response_body = """{
|
|
"tracks" : {
|
|
"href" : "https://api.spotify.com/v1/search?query=Happy+album%3ADespicable+Me+2+artist%3APharrell+Williams&offset=0&limit=20&type=track",
|
|
"items" : [ {
|
|
"album" : {
|
|
"album_type" : "compilation",
|
|
"available_markets" : [ "AD", "AR", "AT", "AU", "BE", "BG", "BO", "BR", "CA", "CH", "CL", "CO", "CR", "CY", "CZ", "DE", "DK", "DO", "EC", "EE", "ES", "FI", "FR", "GB", "GR", "GT", "HK", "HN", "HU", "IE", "IS", "IT", "LI", "LT", "LU", "LV", "MC", "MT", "MX", "MY", "NI", "NL", "NO", "NZ", "PA", "PE", "PH", "PL", "PT", "PY", "RO", "SE", "SG", "SI", "SK", "SV", "TR", "TW", "US", "UY" ],
|
|
"external_urls" : {
|
|
"spotify" : "https://open.spotify.com/album/5l3zEmMrOhOzG8d8s83GOL"
|
|
},
|
|
"href" : "https://api.spotify.com/v1/albums/5l3zEmMrOhOzG8d8s83GOL",
|
|
"id" : "5l3zEmMrOhOzG8d8s83GOL",
|
|
"images" : [ {
|
|
"height" : 640,
|
|
"url" : "https://i.scdn.co/image/cb7905340c132365bbaee3f17498f062858382e8",
|
|
"width" : 640
|
|
}, {
|
|
"height" : 300,
|
|
"url" : "https://i.scdn.co/image/af369120f0b20099d6784ab31c88256113f10ffb",
|
|
"width" : 300
|
|
}, {
|
|
"height" : 64,
|
|
"url" : "https://i.scdn.co/image/9dad385ddf2e7db0bef20cec1fcbdb08689d9ae8",
|
|
"width" : 64
|
|
} ],
|
|
"name" : "Despicable Me 2 (Original Motion Picture Soundtrack)",
|
|
"type" : "album",
|
|
"uri" : "spotify:album:5l3zEmMrOhOzG8d8s83GOL"
|
|
},
|
|
"artists" : [ {
|
|
"external_urls" : {
|
|
"spotify" : "https://open.spotify.com/artist/2RdwBSPQiwcmiDo9kixcl8"
|
|
},
|
|
"href" : "https://api.spotify.com/v1/artists/2RdwBSPQiwcmiDo9kixcl8",
|
|
"id" : "2RdwBSPQiwcmiDo9kixcl8",
|
|
"name" : "Pharrell Williams",
|
|
"type" : "artist",
|
|
"uri" : "spotify:artist:2RdwBSPQiwcmiDo9kixcl8"
|
|
} ],
|
|
"available_markets" : [ "AD", "AR", "AT", "AU", "BE", "BG", "BO", "BR", "CA", "CH", "CL", "CO", "CR", "CY", "CZ", "DE", "DK", "DO", "EC", "EE", "ES", "FI", "FR", "GB", "GR", "GT", "HK", "HN", "HU", "IE", "IS", "IT", "LI", "LT", "LU", "LV", "MC", "MT", "MX", "MY", "NI", "NL", "NO", "NZ", "PA", "PE", "PH", "PL", "PT", "PY", "RO", "SE", "SG", "SI", "SK", "SV", "TR", "TW", "US", "UY" ],
|
|
"disc_number" : 1,
|
|
"duration_ms" : 233305,
|
|
"explicit" : false,
|
|
"external_ids" : {
|
|
"isrc" : "USQ4E1300686"
|
|
},
|
|
"external_urls" : {
|
|
"spotify" : "https://open.spotify.com/track/6NPVjNh8Jhru9xOmyQigds"
|
|
},
|
|
"href" : "https://api.spotify.com/v1/tracks/6NPVjNh8Jhru9xOmyQigds",
|
|
"id" : "6NPVjNh8Jhru9xOmyQigds",
|
|
"name" : "Happy",
|
|
"popularity" : 89,
|
|
"preview_url" : "https://p.scdn.co/mp3-preview/6b00000be293e6b25f61c33e206a0c522b5cbc87",
|
|
"track_number" : 4,
|
|
"type" : "track",
|
|
"uri" : "spotify:track:6NPVjNh8Jhru9xOmyQigds"
|
|
} ],
|
|
"limit" : 20,
|
|
"next" : null,
|
|
"offset" : 0,
|
|
"previous" : null,
|
|
"total" : 1
|
|
}
|
|
}"""
|
|
responses.add(responses.GET,
|
|
'https://api.spotify.com/v1/search?q=Happy+album%3ADespicable%20Me%202+artist%3APharrell%20Williams&type=track',
|
|
body=response_body, status=200,
|
|
content_type='application/json')
|
|
item = Item(
|
|
mb_trackid='01234',
|
|
album='Despicable Me 2',
|
|
albumartist='Pharrell Williams',
|
|
title='Happy',
|
|
length=10
|
|
)
|
|
item.add(self.lib)
|
|
results = self.spotify.query_spotify(self.lib, "Happy")
|
|
self.assertEquals(1, len(results))
|
|
self.assertEquals("6NPVjNh8Jhru9xOmyQigds", results[0]['id'])
|
|
self.spotify.output_results(results)
|
|
|
|
def suite():
|
|
return unittest.TestLoader().loadTestsFromName(__name__)
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main(defaultTest='suite')
|