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>
58 lines
2.2 KiB
Python
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()
|