From 6d9100739dad0c61967323b251a7fc35d320452d Mon Sep 17 00:00:00 2001 From: Laurent Monin Date: Wed, 3 Apr 2024 13:35:12 +0200 Subject: [PATCH] Add extra tests for prepare_releases_for_versions() --- test/data/ws_data/release_group_5.json | 46 ++++++++++++++++++++++++++ test/test_releaseversions.py | 45 ++++++++++++++++++++++++- 2 files changed, 90 insertions(+), 1 deletion(-) create mode 100644 test/data/ws_data/release_group_5.json diff --git a/test/data/ws_data/release_group_5.json b/test/data/ws_data/release_group_5.json new file mode 100644 index 000000000..d5c0166e8 --- /dev/null +++ b/test/data/ws_data/release_group_5.json @@ -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 +} diff --git a/test/test_releaseversions.py b/test/test_releaseversions.py index 78838ff26..d9922f8f5 100644 --- a/test/test_releaseversions.py +++ b/test/test_releaseversions.py @@ -23,13 +23,17 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +from unittest.mock import patch from test.picardtestcase import ( PicardTestCase, load_test_json, ) -from picard.releasegroup import ReleaseGroup +from picard.releasegroup import ( + ReleaseGroup, + prepare_releases_for_versions, +) settings = { @@ -45,6 +49,13 @@ class ReleaseTest(PicardTestCase): def test_1(self): self.set_config_values(settings) 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._parse_versions(rlist) self.assertEqual(r.versions[0]['name'], @@ -57,6 +68,12 @@ class ReleaseTest(PicardTestCase): def test_2(self): self.set_config_values(settings) 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._parse_versions(rlist) self.assertEqual(r.versions[0]['name'], @@ -67,9 +84,35 @@ class ReleaseTest(PicardTestCase): def test_3(self): self.set_config_values(settings) 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._parse_versions(rlist) self.assertEqual(r.versions[0]['name'], '5 / 2009 / FR / CD / label A / cat 123 / 0123456789') self.assertEqual(r.versions[1]['name'], '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)