Merge branch 'test-improvements-bible_ref_parsing' into 'master'

Test improvements for bible ref parsing

See merge request openlp/openlp!92
This commit is contained in:
Tim Bentley 2019-12-03 19:54:57 +00:00
commit 3b3f92d8b1

View File

@ -70,58 +70,58 @@ class TestBibleManager(TestCase, TestMixin):
del self.manager del self.manager
self.destroy_settings() self.destroy_settings()
def test_parse_reference_one(self): def test_parse_reference_numbered_book_single_chapter_no_verse_reference(self):
""" """
Test the parse_reference method with 1 Timothy 1 Test the parse_reference method with 1 Timothy 1
""" """
# GIVEN given a bible in the bible manager # GIVEN given a bible in the bible manager
# WHEN asking to parse the bible reference # WHEN asking to parse the bible reference
results = parse_reference('1 Timothy 1', self.manager.db_cache['tests'], MagicMock(), 54) results = parse_reference('1 Timothy 1', self.manager.db_cache['tests'], MagicMock(), 54)
# THEN a verse array should be returned # THEN a one tuple verse array should be returned
assert [(54, 1, 1, -1)] == results, "The bible verses should matches the expected results" assert [(54, 1, 1, -1)] == results, "The bible verses should match the expected results"
def test_parse_reference_two(self): def test_parse_reference_numbered_book_single_range_single_chapter_multiple_verses(self):
""" """
Test the parse_reference method with 1 Timothy 1:1-2 Test the parse_reference method with 1 Timothy 1:1-2
""" """
# GIVEN given a bible in the bible manager # GIVEN given a bible in the bible manager
# WHEN asking to parse the bible reference # WHEN asking to parse the bible reference
results = parse_reference('1 Timothy 1:1-2', self.manager.db_cache['tests'], MagicMock(), 54) results = parse_reference('1 Timothy 1:1-2', self.manager.db_cache['tests'], MagicMock(), 54)
# THEN a verse array should be returned # THEN a one tuple verse array should be returned
assert [(54, 1, 1, 2)] == results, "The bible verses should matches the expected results" assert [(54, 1, 1, 2)] == results, "The bible verses should match the expected results"
def test_parse_reference_three(self): def test_parse_reference_numbered_book_single_range_multiple_chapters_specific_verses(self):
""" """
Test the parse_reference method with 1 Timothy 1:1-2 Test the parse_reference method with 1 Timothy 1:1-2
""" """
# GIVEN given a bible in the bible manager # GIVEN given a bible in the bible manager
# WHEN asking to parse the bible reference # WHEN asking to parse the bible reference
results = parse_reference('1 Timothy 1:1-2:1', self.manager.db_cache['tests'], MagicMock(), 54) results = parse_reference('1 Timothy 1:1-2:1', self.manager.db_cache['tests'], MagicMock(), 54)
# THEN a verse array should be returned # THEN a two tuple verse array should be returned
assert [(54, 1, 1, -1), (54, 2, 1, 1)] == results, \ assert [(54, 1, 1, -1), (54, 2, 1, 1)] == results, \
"The bible verses should match the expected results" "The bible verses should match the expected results"
def test_parse_reference_four(self): def test_parse_reference_invalid_book(self):
""" """
Test the parse_reference method with non existence book Test the parse_reference method with non existent book
""" """
# GIVEN given a bible in the bible manager # GIVEN given a bible in the bible manager
# WHEN asking to parse the bible reference # WHEN asking to parse the bible reference
results = parse_reference('Raoul 1', self.manager.db_cache['tests'], MagicMock()) results = parse_reference('Raoul 1', self.manager.db_cache['tests'], MagicMock())
# THEN a verse array should be returned # THEN an empty verse array should be returned
assert [] == results, "The bible Search should return an empty list" assert [] == results, "The bible search should return an empty list"
def test_parse_reference_five(self): def test_parse_reference_numbered_book_single_range_single_chapter_with_end_reference(self):
""" """
Test the parse_reference method with 1 Timothy 1:3-end Test the parse_reference method with 1 Timothy 1:3-end
""" """
# GIVEN given a bible in the bible manager # GIVEN given a bible in the bible manager
# WHEN asking to parse the bible reference # WHEN asking to parse the bible reference
results = parse_reference('1 Timothy 1:3-end', self.manager.db_cache['tests'], MagicMock(), 54) results = parse_reference('1 Timothy 1:3-end', self.manager.db_cache['tests'], MagicMock(), 54)
# THEN a verse array should be returned # THEN a one tuple verse array should be returned
assert [(54, 1, 3, -1)] == results, "The bible verses should matches the expected results" assert [(54, 1, 3, -1)] == results, "The bible verses should match the expected results"
def test_parse_reference_six(self): def test_parse_reference_numbered_book_single_range_single_chapter_with_end_reference_no_bible_ref_id(self):
""" """
Test the parse_reference method with 1 Timothy 1:3-end without a bible ref id to match Test the parse_reference method with 1 Timothy 1:3-end without a bible ref id to match
how the GUI does the search. This is logged in issue #282 how the GUI does the search. This is logged in issue #282
@ -129,5 +129,66 @@ class TestBibleManager(TestCase, TestMixin):
# GIVEN given a bible in the bible manager # GIVEN given a bible in the bible manager
# WHEN asking to parse the bible reference in Language 0 (english) # WHEN asking to parse the bible reference in Language 0 (english)
results = parse_reference('1 Timothy 1:3-end', self.manager.db_cache['tests'], 0) results = parse_reference('1 Timothy 1:3-end', self.manager.db_cache['tests'], 0)
# THEN a verse array should be returned # THEN a one tuple verse array should be returned
assert [(54, 1, 3, -1)] == results, "The bible verses should matches the expected results" assert [(54, 1, 3, -1)] == results, "The bible verses should match the expected results"
def test_parse_reference_book_ref_id_invalid(self):
"""
Test the parse_reference method with 1 Timothy 1:1 with an invalid bible ref id
"""
# GIVEN given a bible in the bible manager
# WHEN asking to parse the bible reference with an invalid bible reference id
results = parse_reference('1 Timothy 1:1', self.manager.db_cache['tests'], MagicMock(), -666)
# THEN an empty verse array should be returned
assert [] == results, "The bible verse list should be empty"
def test_parse_reference_no_from_chapter_in_second_range(self):
"""
Test the parse_reference method with 1 Timothy 1:1,3
"""
# GIVEN given a bible in the bible manager
# WHEN asking to parse the bible reference that has no from_chapter in the second range
results = parse_reference('1 Timothy 1:1,3', self.manager.db_cache['tests'], MagicMock(), 54)
# THEN a two tuple verse array should be returned
assert [(54, 1, 1, 1), (54, 1, 3, 3)] == results, "The bible verses should match the expected results"
def test_parse_reference_to_chapter_less_than_from_chapter(self):
"""
Test the parse_reference method with 1 Timothy 2:1-1:1
"""
# GIVEN given a bible in the bible manager
# WHEN asking to parse the bible reference with a to_chapter less than the from_chapter
results = parse_reference('1 Timothy 2:1-1:1', self.manager.db_cache['tests'], MagicMock(), 54)
# THEN an empty verse array should be returned
assert [] == results, "The bible verse list should be empty"
def test_parse_reference_no_from_chapter_specified(self):
"""
Test the parse_reference method with 1 Timothy :1-2
"""
# GIVEN given a bible in the bible manager
# WHEN asking to parse the bible reference with no from_chapter specified
results = parse_reference('1 Timothy :1-2', self.manager.db_cache['tests'], MagicMock(), 54)
# THEN a two tuple verse array should be returned with the bible verse references treated as chapter references
assert [(54, 1, 1, -1), (54, 2, 1, -1)] == results, "The bible verses should match the expected results"
def test_parse_reference_three_chapters(self):
"""
Test the parse_reference method with 1 Timothy 1-3
"""
# GIVEN given a bible in the bible manager
# WHEN asking to parse the bible reference with three chapters
results = parse_reference('1 Timothy 1-3', self.manager.db_cache['tests'], MagicMock(), 54)
# THEN a three tuple verse array should be returned
assert [(54, 1, 1, -1), (54, 2, 1, -1), (54, 3, 1, -1)] == results, \
"The bible verses should match the expected results"
def test_parse_reference_non_regexp_matching_reference(self):
"""
Test the parse_reference method with 1 Timothy
"""
# GIVEN given a bible in the bible manager
# WHEN asking to parse the bible reference that fails the regexp matching
results = parse_reference('1 Timothy', self.manager.db_cache['tests'], MagicMock(), 54)
# THEN an empty verse array should be returned
assert [] == results, "The bible verse list should be empty"