mirror of
https://github.com/beetbox/beets.git
synced 2025-12-15 21:14:19 +01:00
Merge pull request #993 from KraYmer/lastgenre_coverage
Lastgenre coverage (mocking galore)
This commit is contained in:
commit
18ee57085d
1 changed files with 72 additions and 0 deletions
|
|
@ -14,6 +14,9 @@
|
|||
|
||||
"""Tests for the 'lastgenre' plugin."""
|
||||
|
||||
from mock import Mock
|
||||
|
||||
import _common
|
||||
from _common import unittest
|
||||
from beetsplug import lastgenre
|
||||
from beets import config
|
||||
|
|
@ -136,6 +139,75 @@ class LastGenrePluginTest(unittest.TestCase, TestHelper):
|
|||
self.assertEqual(self.plugin._resolve_genres(['blues', 'blues']),
|
||||
'Blues')
|
||||
|
||||
def test_tags_for(self):
|
||||
class MockPylastElem(object):
|
||||
def __init__(self, name):
|
||||
self.name = name
|
||||
|
||||
def get_name(self):
|
||||
return self.name
|
||||
|
||||
class MockPylastObj(object):
|
||||
def get_top_tags(self):
|
||||
tag1 = Mock()
|
||||
tag1.weight = 90
|
||||
tag1.item = MockPylastElem(u'Pop')
|
||||
tag2 = Mock()
|
||||
tag2.weight = 40
|
||||
tag2.item = MockPylastElem(u'Rap')
|
||||
return [tag1, tag2]
|
||||
|
||||
res = lastgenre._tags_for(MockPylastObj())
|
||||
self.assertEqual(res, [u'pop', u'rap'])
|
||||
res = lastgenre._tags_for(MockPylastObj(), min_weight=50)
|
||||
self.assertEqual(res, [u'pop'])
|
||||
|
||||
def test_get_genre(self):
|
||||
MOCK_GENRES = {'track': u'1', 'album': u'2', 'artist': u'3'}
|
||||
|
||||
def mock_fetch_track_genre(self, obj=None):
|
||||
return MOCK_GENRES['track']
|
||||
|
||||
def mock_fetch_album_genre(self, obj):
|
||||
return MOCK_GENRES['album']
|
||||
|
||||
def mock_fetch_artist_genre(self, obj):
|
||||
return MOCK_GENRES['artist']
|
||||
|
||||
lastgenre.LastGenrePlugin.fetch_track_genre = mock_fetch_track_genre
|
||||
lastgenre.LastGenrePlugin.fetch_album_genre = mock_fetch_album_genre
|
||||
lastgenre.LastGenrePlugin.fetch_artist_genre = mock_fetch_artist_genre
|
||||
|
||||
self._setup_config(whitelist=False)
|
||||
item = _common.item()
|
||||
item.genre = MOCK_GENRES['track']
|
||||
|
||||
config['lastgenre'] = {'force': False}
|
||||
res = self.plugin._get_genre(item)
|
||||
self.assertEqual(res, (item.genre, 'keep'))
|
||||
|
||||
config['lastgenre'] = {'force': True, 'source': 'track'}
|
||||
res = self.plugin._get_genre(item)
|
||||
self.assertEqual(res, (MOCK_GENRES['track'], 'track'))
|
||||
|
||||
config['lastgenre'] = {'source': 'album'}
|
||||
res = self.plugin._get_genre(item)
|
||||
self.assertEqual(res, (MOCK_GENRES['album'], 'album'))
|
||||
|
||||
config['lastgenre'] = {'source': 'artist'}
|
||||
res = self.plugin._get_genre(item)
|
||||
self.assertEqual(res, (MOCK_GENRES['artist'], 'artist'))
|
||||
|
||||
MOCK_GENRES['artist'] = None
|
||||
res = self.plugin._get_genre(item)
|
||||
self.assertEqual(res, (item.genre, 'original'))
|
||||
|
||||
config['lastgenre'] = {'fallback': 'rap'}
|
||||
item.genre = None
|
||||
res = self.plugin._get_genre(item)
|
||||
self.assertEqual(res, (config['lastgenre']['fallback'].get(),
|
||||
'fallback'))
|
||||
|
||||
|
||||
def suite():
|
||||
return unittest.TestLoader().loadTestsFromName(__name__)
|
||||
|
|
|
|||
Loading…
Reference in a new issue