diff --git a/test/data/ws_data/collection_list.json b/test/data/ws_data/collection_list.json new file mode 100644 index 000000000..e5b26dd4e --- /dev/null +++ b/test/data/ws_data/collection_list.json @@ -0,0 +1,42 @@ +{ + "collection-offset": 0, + "collections": [ + { + "name": "Attending", + "type-id": "de6aedf5-73c2-3f7c-88f8-e128c189a205", + "type": "Attending", + "entity-type": "event", + "event-count": 3, + "editor": "theuser", + "id": "03b87515-f926-3b85-aeaa-755f737bf569" + }, + { + "id": "40734348-a970-491a-a160-722246cfadf4", + "editor": "theuser", + "entity-type": "release", + "type-id": "c26c6ec4-17f0-32de-95c5-fa724dbdb308", + "type": "Owned music", + "release-count": 402, + "name": "My Collection" + }, + { + "name": "Digital Releases", + "release-count": 182, + "type-id": "c26c6ec4-17f0-32de-95c5-fa724dbdb308", + "type": "Owned music", + "entity-type": "release", + "editor": "theuser", + "id": "581e3ae8-15ac-4fd9-8837-a43ea3dd7d64" + }, + { + "name": "Wishlist", + "release-count": 4, + "type-id": "5feda0f8-14cf-38fd-89d0-ac2d48ad3324", + "type": "Wishlist", + "entity-type": "release", + "editor": "theuser", + "id": "6c6ec0ca-4136-44c3-ac6e-30c4fc085ab7" + } + ], + "collection-count": 4 +} diff --git a/test/picardtestcase.py b/test/picardtestcase.py index de52451aa..c1103804c 100644 --- a/test/picardtestcase.py +++ b/test/picardtestcase.py @@ -68,6 +68,7 @@ class FakeTagger(QtCore.QObject): self.thread_pool = FakeThreadPool() self.priority_thread_pool = FakeThreadPool() self.window = MagicMock() + self.webservice = MagicMock() def register_cleanup(self, func): self.exit_cleanup.append(func) diff --git a/test/test_collection.py b/test/test_collection.py index 309072b80..31307f3f3 100644 --- a/test/test_collection.py +++ b/test/test_collection.py @@ -24,13 +24,17 @@ from unittest.mock import ( patch, ) -from test.picardtestcase import PicardTestCase +from test.picardtestcase import ( + PicardTestCase, + load_test_json, +) import picard.collection from picard.collection import ( Collection, add_release_to_user_collections, get_user_collection, + load_user_collections, ) from picard.webservice.api_helpers import MBAPIHelper @@ -39,9 +43,15 @@ def fake_request_handler(collection_id, releases, handler): handler(None, None, None) +def fake_get_collection_list(handler): + document = load_test_json('collection_list.json') + handler(document, None, None) + + mb_api = MagicMock(auto_spec=MBAPIHelper) mb_api.put_to_collection.side_effect = fake_request_handler mb_api.delete_from_collection.side_effect = fake_request_handler +mb_api.get_collection_list.side_effect = fake_get_collection_list class CollectionTest(PicardTestCase): @@ -145,3 +155,25 @@ class CollectionTest(PicardTestCase): self.assertEqual('collection3', collection3.name) self.assertIn(release_node['id'], collection3.releases) self.assertEqual(0, collection3.size) + + @patch('PyQt6.QtCore.QObject.tagger.mb_api', mb_api, create=True) + def test_load_user_collections(self): + self.tagger.webservice.oauth_manager.is_authorized.return_value = True + picard.collection.user_collections['old-collection'] = Collection('old-collection', mb_api) + callback = MagicMock() + load_user_collections(callback) + callback.assert_called_once_with() + self.assertEqual(3, len(picard.collection.user_collections)) + self.assertNotIn('old-collection', picard.collection.user_collections) + collection1 = picard.collection.user_collections['40734348-a970-491a-a160-722246cfadf4'] + self.assertEqual(collection1.name, 'My Collection') + self.assertEqual(collection1.size, 402) + + @patch('PyQt6.QtCore.QObject.tagger.mb_api', mb_api, create=True) + def test_load_user_collections_not_authorized(self): + self.tagger.webservice.oauth_manager.is_authorized.return_value = False + picard.collection.user_collections['old-collection'] = Collection('old-collection', mb_api) + callback = MagicMock() + load_user_collections(callback) + callback.assert_not_called() + self.assertEqual(0, len(picard.collection.user_collections))