mirror of
https://github.com/beetbox/beets.git
synced 2025-12-07 09:04:33 +01:00
Merge pull request #3671 from dosoe/beets_test_parentwork
first try at mocking get_work_by_id
This commit is contained in:
commit
53dcb24d10
2 changed files with 108 additions and 10 deletions
|
|
@ -96,7 +96,7 @@ class ParentWorkPlugin(BeetsPlugin):
|
||||||
item.try_write()
|
item.try_write()
|
||||||
command = ui.Subcommand(
|
command = ui.Subcommand(
|
||||||
'parentwork',
|
'parentwork',
|
||||||
help=u'fetche parent works, composers and dates')
|
help=u'fetch parent works, composers and dates')
|
||||||
|
|
||||||
command.parser.add_option(
|
command.parser.add_option(
|
||||||
u'-f', u'--force', dest='force',
|
u'-f', u'--force', dest='force',
|
||||||
|
|
@ -129,6 +129,7 @@ class ParentWorkPlugin(BeetsPlugin):
|
||||||
if 'artist-relation-list' in work_info['work']:
|
if 'artist-relation-list' in work_info['work']:
|
||||||
for artist in work_info['work']['artist-relation-list']:
|
for artist in work_info['work']['artist-relation-list']:
|
||||||
if artist['type'] == 'composer':
|
if artist['type'] == 'composer':
|
||||||
|
composer_exists = True
|
||||||
parent_composer.append(artist['artist']['name'])
|
parent_composer.append(artist['artist']['name'])
|
||||||
parent_composer_sort.append(artist['artist']['sort-name'])
|
parent_composer_sort.append(artist['artist']['sort-name'])
|
||||||
if 'end' in artist.keys():
|
if 'end' in artist.keys():
|
||||||
|
|
|
||||||
|
|
@ -20,12 +20,52 @@ from __future__ import division, absolute_import, print_function
|
||||||
import os
|
import os
|
||||||
import unittest
|
import unittest
|
||||||
from test.helper import TestHelper
|
from test.helper import TestHelper
|
||||||
|
from mock import patch
|
||||||
|
|
||||||
from beets.library import Item
|
from beets.library import Item
|
||||||
from beetsplug import parentwork
|
from beetsplug import parentwork
|
||||||
|
|
||||||
|
|
||||||
class ParentWorkTest(unittest.TestCase, TestHelper):
|
work = {'work': {'id': '1',
|
||||||
|
'title': 'work',
|
||||||
|
'work-relation-list': [{'type': 'parts',
|
||||||
|
'direction': 'backward',
|
||||||
|
'work': {'id': '2'}}],
|
||||||
|
'artist-relation-list': [{'type': 'composer',
|
||||||
|
'artist': {'name':
|
||||||
|
'random composer',
|
||||||
|
'sort-name':
|
||||||
|
'composer, random'}}]}}
|
||||||
|
dp_work = {'work': {'id': '2',
|
||||||
|
'title': 'directparentwork',
|
||||||
|
'work-relation-list': [{'type': 'parts',
|
||||||
|
'direction': 'backward',
|
||||||
|
'work': {'id': '3'}}],
|
||||||
|
'artist-relation-list': [{'type': 'composer',
|
||||||
|
'artist': {'name':
|
||||||
|
'random composer',
|
||||||
|
'sort-name':
|
||||||
|
'composer, random'
|
||||||
|
}}]}}
|
||||||
|
p_work = {'work': {'id': '3',
|
||||||
|
'title': 'parentwork',
|
||||||
|
'artist-relation-list': [{'type': 'composer',
|
||||||
|
'artist': {'name':
|
||||||
|
'random composer',
|
||||||
|
'sort-name':
|
||||||
|
'composer, random'}}]}}
|
||||||
|
|
||||||
|
|
||||||
|
def mock_workid_response(mbid, includes):
|
||||||
|
if mbid == '1':
|
||||||
|
return work
|
||||||
|
elif mbid == '2':
|
||||||
|
return dp_work
|
||||||
|
elif mbid == '3':
|
||||||
|
return p_work
|
||||||
|
|
||||||
|
|
||||||
|
class ParentWorkIntegrationTest(unittest.TestCase, TestHelper):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
"""Set up configuration"""
|
"""Set up configuration"""
|
||||||
self.setup_beets()
|
self.setup_beets()
|
||||||
|
|
@ -35,12 +75,15 @@ class ParentWorkTest(unittest.TestCase, TestHelper):
|
||||||
self.unload_plugins()
|
self.unload_plugins()
|
||||||
self.teardown_beets()
|
self.teardown_beets()
|
||||||
|
|
||||||
|
# test how it works with real musicbrainz data
|
||||||
@unittest.skipUnless(
|
@unittest.skipUnless(
|
||||||
os.environ.get('INTEGRATION_TEST', '0') == '1',
|
os.environ.get('INTEGRATION_TEST', '0') == '1',
|
||||||
'integration testing not enabled')
|
'integration testing not enabled')
|
||||||
def test_normal_case(self):
|
def test_normal_case_real(self):
|
||||||
item = Item(path='/file',
|
item = Item(path='/file',
|
||||||
mb_workid=u'e27bda6e-531e-36d3-9cd7-b8ebc18e8c53')
|
mb_workid=u'e27bda6e-531e-36d3-9cd7-b8ebc18e8c53',
|
||||||
|
parentwork_workid_current=u'e27bda6e-531e-36d3-9cd7-\
|
||||||
|
b8ebc18e8c53')
|
||||||
item.add(self.lib)
|
item.add(self.lib)
|
||||||
|
|
||||||
self.run_command('parentwork')
|
self.run_command('parentwork')
|
||||||
|
|
@ -52,11 +95,13 @@ class ParentWorkTest(unittest.TestCase, TestHelper):
|
||||||
@unittest.skipUnless(
|
@unittest.skipUnless(
|
||||||
os.environ.get('INTEGRATION_TEST', '0') == '1',
|
os.environ.get('INTEGRATION_TEST', '0') == '1',
|
||||||
'integration testing not enabled')
|
'integration testing not enabled')
|
||||||
def test_force(self):
|
def test_force_real(self):
|
||||||
self.config['parentwork']['force'] = True
|
self.config['parentwork']['force'] = True
|
||||||
item = Item(path='/file',
|
item = Item(path='/file',
|
||||||
mb_workid=u'e27bda6e-531e-36d3-9cd7-b8ebc18e8c53',
|
mb_workid=u'e27bda6e-531e-36d3-9cd7-b8ebc18e8c53',
|
||||||
mb_parentworkid=u'XXX')
|
mb_parentworkid=u'XXX',
|
||||||
|
parentwork_workid_current=u'e27bda6e-531e-36d3-9cd7-\
|
||||||
|
b8ebc18e8c53', parentwork='whatever')
|
||||||
item.add(self.lib)
|
item.add(self.lib)
|
||||||
|
|
||||||
self.run_command('parentwork')
|
self.run_command('parentwork')
|
||||||
|
|
@ -68,10 +113,12 @@ class ParentWorkTest(unittest.TestCase, TestHelper):
|
||||||
@unittest.skipUnless(
|
@unittest.skipUnless(
|
||||||
os.environ.get('INTEGRATION_TEST', '0') == '1',
|
os.environ.get('INTEGRATION_TEST', '0') == '1',
|
||||||
'integration testing not enabled')
|
'integration testing not enabled')
|
||||||
def test_no_force(self):
|
def test_no_force_real(self):
|
||||||
self.config['parentwork']['force'] = True
|
self.config['parentwork']['force'] = False
|
||||||
item = Item(path='/file', mb_workid=u'e27bda6e-531e-36d3-9cd7-\
|
item = Item(path='/file', mb_workid=u'e27bda6e-531e-36d3-9cd7-\
|
||||||
b8ebc18e8c53', mb_parentworkid=u'XXX')
|
b8ebc18e8c53', mb_parentworkid=u'XXX',
|
||||||
|
parentwork_workid_current=u'e27bda6e-531e-36d3-9cd7-\
|
||||||
|
b8ebc18e8c53', parentwork='whatever')
|
||||||
item.add(self.lib)
|
item.add(self.lib)
|
||||||
|
|
||||||
self.run_command('parentwork')
|
self.run_command('parentwork')
|
||||||
|
|
@ -85,7 +132,7 @@ class ParentWorkTest(unittest.TestCase, TestHelper):
|
||||||
@unittest.skipUnless(
|
@unittest.skipUnless(
|
||||||
os.environ.get('INTEGRATION_TEST', '0') == '1',
|
os.environ.get('INTEGRATION_TEST', '0') == '1',
|
||||||
'integration testing not enabled')
|
'integration testing not enabled')
|
||||||
def test_direct_parent_work(self):
|
def test_direct_parent_work_real(self):
|
||||||
mb_workid = u'2e4a3668-458d-3b2a-8be2-0b08e0d8243a'
|
mb_workid = u'2e4a3668-458d-3b2a-8be2-0b08e0d8243a'
|
||||||
self.assertEqual(u'f04b42df-7251-4d86-a5ee-67cfa49580d1',
|
self.assertEqual(u'f04b42df-7251-4d86-a5ee-67cfa49580d1',
|
||||||
parentwork.direct_parent_id(mb_workid)[0])
|
parentwork.direct_parent_id(mb_workid)[0])
|
||||||
|
|
@ -93,6 +140,56 @@ class ParentWorkTest(unittest.TestCase, TestHelper):
|
||||||
parentwork.work_parent_id(mb_workid)[0])
|
parentwork.work_parent_id(mb_workid)[0])
|
||||||
|
|
||||||
|
|
||||||
|
class ParentWorkTest(unittest.TestCase, TestHelper):
|
||||||
|
def setUp(self):
|
||||||
|
"""Set up configuration"""
|
||||||
|
self.setup_beets()
|
||||||
|
self.load_plugins('parentwork')
|
||||||
|
self.patcher = patch('musicbrainzngs.get_work_by_id',
|
||||||
|
side_effect=mock_workid_response)
|
||||||
|
self.patcher.start()
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
self.unload_plugins()
|
||||||
|
self.teardown_beets()
|
||||||
|
self.patcher.stop()
|
||||||
|
|
||||||
|
def test_normal_case(self):
|
||||||
|
item = Item(path='/file', mb_workid='1', parentwork_workid_current='1')
|
||||||
|
item.add(self.lib)
|
||||||
|
|
||||||
|
self.run_command('parentwork')
|
||||||
|
|
||||||
|
item.load()
|
||||||
|
self.assertEqual(item['mb_parentworkid'], '3')
|
||||||
|
|
||||||
|
def test_force(self):
|
||||||
|
self.config['parentwork']['force'] = True
|
||||||
|
item = Item(path='/file', mb_workid='1', mb_parentworkid=u'XXX',
|
||||||
|
parentwork_workid_current='1', parentwork='parentwork')
|
||||||
|
item.add(self.lib)
|
||||||
|
|
||||||
|
self.run_command('parentwork')
|
||||||
|
|
||||||
|
item.load()
|
||||||
|
self.assertEqual(item['mb_parentworkid'], '3')
|
||||||
|
|
||||||
|
def test_no_force(self):
|
||||||
|
self.config['parentwork']['force'] = False
|
||||||
|
item = Item(path='/file', mb_workid='1', mb_parentworkid=u'XXX',
|
||||||
|
parentwork_workid_current='1', parentwork='parentwork')
|
||||||
|
item.add(self.lib)
|
||||||
|
|
||||||
|
self.run_command('parentwork')
|
||||||
|
|
||||||
|
item.load()
|
||||||
|
self.assertEqual(item['mb_parentworkid'], u'XXX')
|
||||||
|
|
||||||
|
def test_direct_parent_work(self):
|
||||||
|
self.assertEqual('2', parentwork.direct_parent_id('1')[0])
|
||||||
|
self.assertEqual('3', parentwork.work_parent_id('1')[0])
|
||||||
|
|
||||||
|
|
||||||
def suite():
|
def suite():
|
||||||
return unittest.TestLoader().loadTestsFromName(__name__)
|
return unittest.TestLoader().loadTestsFromName(__name__)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue