forked from openlp/openlp
Add test for author matching
This commit is contained in:
parent
9b173dc0fe
commit
97b603a2d6
@ -556,18 +556,17 @@ class SongMediaItem(MediaManagerItem):
|
|||||||
|
|
||||||
:param song: A list of authors from the song in the database
|
:param song: A list of authors from the song in the database
|
||||||
:param authors: A string with authors from the song to be imported
|
:param authors: A string with authors from the song to be imported
|
||||||
:return: True when Authors do match, else false.
|
:return: True when Authors do match, else False.
|
||||||
"""
|
"""
|
||||||
author_list = authors.split(', ')
|
author_list = authors.split(', ')
|
||||||
for author in song.authors:
|
for author in song.authors:
|
||||||
if author.display_name in author_list:
|
if author.display_name in author_list:
|
||||||
author_list = author_list.remove(author.display_name)
|
author_list.remove(author.display_name)
|
||||||
else:
|
else:
|
||||||
return False
|
return False
|
||||||
# List must be empty at the end
|
# List must be empty at the end
|
||||||
return not author_list
|
return not author_list
|
||||||
|
|
||||||
|
|
||||||
def search(self, string, show_error):
|
def search(self, string, show_error):
|
||||||
"""
|
"""
|
||||||
Search for some songs
|
Search for some songs
|
||||||
|
@ -128,3 +128,32 @@ class TestMediaItem(TestCase, TestMixin):
|
|||||||
# THEN: I would get an amended footer string
|
# THEN: I would get an amended footer string
|
||||||
self.assertEqual(service_item.raw_footer, ['My Song', 'My copyright', 'CCLI License: 4321'],
|
self.assertEqual(service_item.raw_footer, ['My Song', 'My copyright', 'CCLI License: 4321'],
|
||||||
'The array should be returned correctly with a song, an author, copyright and amended ccli')
|
'The array should be returned correctly with a song, an author, copyright and amended ccli')
|
||||||
|
|
||||||
|
def match_authors_test(self):
|
||||||
|
"""
|
||||||
|
Test the author matching when importing a song from a service
|
||||||
|
"""
|
||||||
|
# GIVEN: A song and a string with authors
|
||||||
|
song = MagicMock()
|
||||||
|
song.authors = []
|
||||||
|
author = MagicMock()
|
||||||
|
author.display_name = "Hans Wurst"
|
||||||
|
song.authors.append(author)
|
||||||
|
author2 = MagicMock()
|
||||||
|
author2.display_name = "Max Mustermann"
|
||||||
|
song.authors.append(author2)
|
||||||
|
# There are occasions where an author appears twice in a song (with different types).
|
||||||
|
# We need to make sure that this case works (lp#1313538)
|
||||||
|
author3 = MagicMock()
|
||||||
|
author3.display_name = "Max Mustermann"
|
||||||
|
song.authors.append(author3)
|
||||||
|
authors_str = "Hans Wurst, Max Mustermann, Max Mustermann"
|
||||||
|
authors_str_wrong = "Hans Wurst, Max Mustermann"
|
||||||
|
|
||||||
|
# WHEN: Checking for matching
|
||||||
|
correct_result = self.media_item._authors_match(song, authors_str)
|
||||||
|
wrong_result = self.media_item._authors_match(song, authors_str_wrong)
|
||||||
|
|
||||||
|
# THEN: They should match
|
||||||
|
self.assertTrue(correct_result)
|
||||||
|
self.assertFalse(wrong_result)
|
||||||
|
Loading…
Reference in New Issue
Block a user