Files
whipper-gui/whipper/test/test_command_mblookup.py
ABCbum bb66a092cd Add test case to new mblookup functionality
A new test case to check for mblookup's ability to search
for data based on release id is created along with a function
mocks getReleaseMetadata using an existing JSON file.

Signed-off-by: ABCbum <kimlong221002@gmail.com>
2019-12-19 08:56:00 +00:00

58 lines
2.2 KiB
Python

# vi:si:et:sw=4:sts=4:ts=4:set fileencoding=utf-8
"""Tests for whipper.command.mblookup"""
import os
import pickle
import unittest
import json
from whipper.command import mblookup
from whipper.common.mbngs import _getMetadata
class MBLookupTestCase(unittest.TestCase):
"""Test cases for whipper.command.mblookup.MBLookup"""
@staticmethod
def _mock_musicbrainz(discid, country=None, record=False):
"""Mock function for whipper.common.mbngs.musicbrainz function."""
filename = "whipper.discid.{}.pickle".format(discid)
path = os.path.join(os.path.dirname(__file__), filename)
with open(path, "rb") as p:
return pickle.load(p)
@staticmethod
def _mock_getReleaseMetadata(release_id):
"""
Mock function for whipper.common.mbngs.getReleaseMetadata.
:param release_id: MusicBrainz Release ID
:type release_id: str
:returns: a DiscMetadata object based on the given release_id
:rtype: `DiscMetadata`
"""
filename = 'whipper.release.{}.json'.format(release_id)
path = os.path.join(os.path.dirname(__file__), filename)
with open(path, "rb") as handle:
response = json.loads(handle.read().decode('utf-8'))
return _getMetadata(response['release'])
def testMissingReleaseType(self):
"""Test that lookup for release without a type set doesn't fail."""
# Using: Gustafsson, Österberg & Cowle - What's Up? 8 (disc 4)
# https://musicbrainz.org/release/d8e6153a-2c47-4804-9d73-0aac1081c3b1
mblookup.musicbrainz = self._mock_musicbrainz
discid = "xu338_M8WukSRi0J.KTlDoflB8Y-"
# https://musicbrainz.org/cdtoc/xu338_M8WukSRi0J.KTlDoflB8Y-
lookup = mblookup.MBLookup([discid], 'whipper mblookup', None)
lookup.do()
def testGetDataFromReleaseId(self):
"""Test that lookup for a release with a specified id."""
# Using: The KLF - Space & Chill Out
# https://musicbrainz.org/release/c56ff16e-1d81-47de-926f-ba22891bd2bd
mblookup.getReleaseMetadata = self._mock_getReleaseMetadata
releaseid = 'c56ff16e-1d81-47de-926f-ba22891bd2bd'
lookup = mblookup.MBLookup([releaseid], 'whipper mblookup', None)
lookup.do()