mirror of
https://github.com/fergalmoran/picard.git
synced 2025-12-22 09:18:18 +00:00
92 lines
3.9 KiB
Python
92 lines
3.9 KiB
Python
# -*- coding: utf-8 -*-
|
|
#
|
|
# Picard, the next-generation MusicBrainz tagger
|
|
#
|
|
# Copyright (C) 2020-2021 Laurent Monin
|
|
# Copyright (C) 2020-2021 Philipp Wolfer
|
|
#
|
|
# This program is free software; you can redistribute it and/or
|
|
# modify it under the terms of the GNU General Public License
|
|
# as published by the Free Software Foundation; either version 2
|
|
# of the License, or (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program; if not, write to the Free Software
|
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
|
|
|
|
from test.picardtestcase import PicardTestCase
|
|
|
|
from picard.coverart.providers.caa import caa_url_fallback_list
|
|
|
|
|
|
class CoverArtImageProviderCaaTest(PicardTestCase):
|
|
def test_caa_url_fallback_list(self):
|
|
def do_tests(sizes, expectations):
|
|
# we create a dummy url named after matching size
|
|
thumbnails = {size: "url %s" % size for size in sizes}
|
|
msgfmt = "for size %s, with sizes %r, got %r, expected %r"
|
|
for size, expect in expectations.items():
|
|
result = [thumbnail.url for thumbnail in caa_url_fallback_list(size, thumbnails)]
|
|
self.assertEqual(result, expect, msg=msgfmt % (size, sizes, result, expect))
|
|
|
|
# For historical reasons, caa web service returns 2 identical urls,
|
|
# for 2 different keys (250/small, 500/large)
|
|
# Here is an example of the json relevant part:
|
|
# "thumbnails": {
|
|
# "250": "http://coverartarchive.org/release/d20247ad-940e-486d-948f-be4c17024ab9/24885128253-250.jpg",
|
|
# "500": "http://coverartarchive.org/release/d20247ad-940e-486d-948f-be4c17024ab9/24885128253-500.jpg",
|
|
# "1200": "http://coverartarchive.org/release/d20247ad-940e-486d-948f-be4c17024ab9/24885128253-1200.jpg",
|
|
# "large": "http://coverartarchive.org/release/d20247ad-940e-486d-948f-be4c17024ab9/24885128253-500.jpg",
|
|
# "small": "http://coverartarchive.org/release/d20247ad-940e-486d-948f-be4c17024ab9/24885128253-250.jpg"
|
|
# },
|
|
sizes = ("250", "500", "1200", "large", "small")
|
|
expectations = {
|
|
50: [],
|
|
250: ['url 250'],
|
|
400: ['url 250'],
|
|
500: ['url 500', 'url 250'],
|
|
600: ['url 500', 'url 250'],
|
|
1200: ['url 1200', 'url 500', 'url 250'],
|
|
1500: ['url 1200', 'url 500', 'url 250'],
|
|
}
|
|
do_tests(sizes, expectations)
|
|
|
|
# Some older releases have no 1200px thumbnail
|
|
sizes = ("250", "500", "large", "small")
|
|
expectations = {
|
|
50: [],
|
|
250: ['url 250'],
|
|
400: ['url 250'],
|
|
500: ['url 500', 'url 250'],
|
|
600: ['url 500', 'url 250'],
|
|
1200: ['url 500', 'url 250'],
|
|
1500: ['url 500', 'url 250'],
|
|
}
|
|
do_tests(sizes, expectations)
|
|
|
|
# In the future, large and small might be removed or new size added
|
|
# test if we can handle that (through size aliases)
|
|
sizes = ("small", "large", "1200", "2000", "unknownsize")
|
|
expectations = {
|
|
50: [],
|
|
250: ['url small'],
|
|
400: ['url small'],
|
|
500: ['url large', 'url small'],
|
|
600: ['url large', 'url small'],
|
|
1200: ['url 1200', 'url large', 'url small'],
|
|
1500: ['url 1200', 'url large', 'url small'],
|
|
}
|
|
do_tests(sizes, expectations)
|
|
|
|
with self.assertRaises(TypeError):
|
|
caa_url_fallback_list("not_an_integer", {"250": "url 250"})
|
|
|
|
with self.assertRaises(AttributeError):
|
|
caa_url_fallback_list(250, 666)
|