Add extra tests for prepare_releases_for_versions()

This commit is contained in:
Laurent Monin
2024-04-03 13:35:12 +02:00
parent 5c1bdb5204
commit 6d9100739d
2 changed files with 90 additions and 1 deletions

View File

@@ -0,0 +1,46 @@
{
"release-offset": 0,
"releases": [
{
"id": "789",
"title": "Foox",
"status": "Official",
"country": "FR",
"date": "2009-08-07",
"barcode": "0123456789",
"text-representation": {
"language": "eng",
"script": "Latn"
},
"media": [
{
"track-count": 2,
"position": 1,
"format": "CD",
"title": ""
},
{
"track-count": 3,
"position": 2,
"format": "CD",
"title": ""
},
{
"track-count": 4,
"position": 3,
"format": "CD",
"title": ""
}
],
"label-info": [
{
"label": {
"name": "label A"
},
"catalog-number": "cat 123"
}
]
}
],
"release-count": 1
}

View File

@@ -23,13 +23,17 @@
# along with this program; if not, write to the Free Software # along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
from unittest.mock import patch
from test.picardtestcase import ( from test.picardtestcase import (
PicardTestCase, PicardTestCase,
load_test_json, load_test_json,
) )
from picard.releasegroup import ReleaseGroup from picard.releasegroup import (
ReleaseGroup,
prepare_releases_for_versions,
)
settings = { settings = {
@@ -45,6 +49,13 @@ class ReleaseTest(PicardTestCase):
def test_1(self): def test_1(self):
self.set_config_values(settings) self.set_config_values(settings)
rlist = load_test_json('release_group_2.json') rlist = load_test_json('release_group_2.json')
releases = list(prepare_releases_for_versions(rlist['releases']))
expected = [
{'id': '123', 'year': '2009', 'country': 'GB', 'format': 'CD', 'label': 'label A', 'catnum': 'cat 123', 'tracks': '5', 'barcode': '0123456789', 'packaging': 'Jewel Case', 'disambiguation': 'special', '_disambiguate_name': [], 'totaltracks': 5, 'countries': [], 'formats': ['CD']},
{'id': '456', 'year': '2009', 'country': 'GB', 'format': 'CD', 'label': 'label A', 'catnum': 'cat 123', 'tracks': '5', 'barcode': '0123456789', 'packaging': 'Digipak', 'disambiguation': 'special', '_disambiguate_name': [], 'totaltracks': 5, 'countries': [], 'formats': ['CD']},
{'id': '789', 'year': '2009', 'country': 'GB', 'format': 'CD', 'label': 'label A', 'catnum': 'cat 123', 'tracks': '5', 'barcode': '0123456789', 'packaging': 'Digipak', 'disambiguation': 'specialx', '_disambiguate_name': [], 'totaltracks': 5, 'countries': [], 'formats': ['CD']},
]
self.assertEqual(releases, expected)
r = ReleaseGroup(1) r = ReleaseGroup(1)
r._parse_versions(rlist) r._parse_versions(rlist)
self.assertEqual(r.versions[0]['name'], self.assertEqual(r.versions[0]['name'],
@@ -57,6 +68,12 @@ class ReleaseTest(PicardTestCase):
def test_2(self): def test_2(self):
self.set_config_values(settings) self.set_config_values(settings)
rlist = load_test_json('release_group_3.json') rlist = load_test_json('release_group_3.json')
releases = list(prepare_releases_for_versions(rlist['releases']))
expected = [
{'id': '789', 'year': '2011', 'country': 'FR', 'format': 'CD', 'label': 'label A', 'catnum': 'cat 123', 'tracks': '5', 'barcode': '0123456789', 'packaging': '??', 'disambiguation': 'special A', '_disambiguate_name': [], 'totaltracks': 5, 'countries': [], 'formats': ['CD']},
{'id': '789', 'year': '2011', 'country': 'FR', 'format': 'CD', 'label': 'label A', 'catnum': 'cat 123', 'tracks': '5', 'barcode': '0123456789', 'packaging': '??', 'disambiguation': '', '_disambiguate_name': [], 'totaltracks': 5, 'countries': [], 'formats': ['CD']},
]
self.assertEqual(releases, expected)
r = ReleaseGroup(1) r = ReleaseGroup(1)
r._parse_versions(rlist) r._parse_versions(rlist)
self.assertEqual(r.versions[0]['name'], self.assertEqual(r.versions[0]['name'],
@@ -67,9 +84,35 @@ class ReleaseTest(PicardTestCase):
def test_3(self): def test_3(self):
self.set_config_values(settings) self.set_config_values(settings)
rlist = load_test_json('release_group_4.json') rlist = load_test_json('release_group_4.json')
releases = list(prepare_releases_for_versions(rlist['releases']))
expected = [
{'id': '789', 'year': '2009', 'country': 'FR', 'format': 'CD', 'label': 'label A', 'catnum': 'cat 123', 'tracks': '5', 'barcode': '0123456789', 'packaging': '??', 'disambiguation': '', '_disambiguate_name': [], 'totaltracks': 5, 'countries': [], 'formats': ['CD']},
{'id': '789', 'year': '2009', 'country': 'FR', 'format': 'CD', 'label': 'label A', 'catnum': 'cat 123', 'tracks': '5', 'barcode': '[no barcode]', 'packaging': '??', 'disambiguation': '', '_disambiguate_name': [], 'totaltracks': 5, 'countries': [], 'formats': ['CD']},
]
self.assertEqual(releases, expected)
r = ReleaseGroup(1) r = ReleaseGroup(1)
r._parse_versions(rlist) r._parse_versions(rlist)
self.assertEqual(r.versions[0]['name'], self.assertEqual(r.versions[0]['name'],
'5 / 2009 / FR / CD / label A / cat 123 / 0123456789') '5 / 2009 / FR / CD / label A / cat 123 / 0123456789')
self.assertEqual(r.versions[1]['name'], self.assertEqual(r.versions[1]['name'],
'5 / 2009 / FR / CD / label A / cat 123 / [no barcode]') '5 / 2009 / FR / CD / label A / cat 123 / [no barcode]')
@patch('picard.releasegroup.VERSIONS_MAX_TRACKS', 2)
def test_4(self):
self.set_config_values(settings)
rlist = load_test_json('release_group_5.json')
releases = list(prepare_releases_for_versions(rlist['releases']))
expected = [
{'id': '789', 'year': '2009', 'country': 'FR', 'format': '3×CD', 'label': 'label A', 'catnum': 'cat 123', 'tracks': '2+3+…', 'barcode': '0123456789', 'packaging': '??', 'disambiguation': '', '_disambiguate_name': [], 'totaltracks': 9, 'countries': [], 'formats': ['CD', 'CD', 'CD']},
]
self.assertEqual(releases, expected)
@patch('picard.releasegroup.VERSIONS_MAX_TRACKS', 3)
def test_5(self):
self.set_config_values(settings)
rlist = load_test_json('release_group_5.json')
releases = list(prepare_releases_for_versions(rlist['releases']))
expected = [
{'id': '789', 'year': '2009', 'country': 'FR', 'format': '3×CD', 'label': 'label A', 'catnum': 'cat 123', 'tracks': '2+3+4', 'barcode': '0123456789', 'packaging': '??', 'disambiguation': '', '_disambiguate_name': [], 'totaltracks': 9, 'countries': [], 'formats': ['CD', 'CD', 'CD']},
]
self.assertEqual(releases, expected)