Example #1
0
def test_case():
    """should match books irrespective of case"""
    query_str = 'Matthew'
    results = yvs.get_result_list(query_str)
    results_lower = yvs.get_result_list(query_str.lower())
    results_upper = yvs.get_result_list(query_str.upper())
    nose.assert_list_equal(results_lower, results)
    nose.assert_list_equal(results_upper, results)
    nose.assert_equal(len(results), 1)
Example #2
0
def test_case():
    """should match versions irrespective of case"""
    query = 'e 4:8 esv'
    results = yvs.get_result_list(query)
    results_lower = yvs.get_result_list(query.lower())
    results_upper = yvs.get_result_list(query.upper())
    nose.assert_list_equal(results_lower, results)
    nose.assert_list_equal(results_upper, results)
    nose.assert_equal(len(results), 6)
def test_case():
    """should match books irrespective of case"""
    query_str = 'Matthew'
    results = yvs.get_result_list(query_str)
    results_lower = yvs.get_result_list(query_str.lower())
    results_upper = yvs.get_result_list(query_str.upper())
    nose.assert_equal(len(results), 1)
    nose.assert_list_equal(results_lower, results)
    nose.assert_list_equal(results_upper, results)
def test_case():
    """should match versions irrespective of case"""
    query = 'e 4:8 esv'
    results = yvs.get_result_list(query)
    results_lower = yvs.get_result_list(query.lower())
    results_upper = yvs.get_result_list(query.upper())
    nose.assert_list_equal(results_lower, results)
    nose.assert_list_equal(results_upper, results)
    nose.assert_equal(len(results), 6)
Example #5
0
def test_partial_ambiguous():
    """should match books by ambiguous partial name"""
    results = yvs.get_result_list('r')
    nose.assert_equal(results[0]['title'], 'Ruth 1 (NIV)')
    nose.assert_equal(results[1]['title'], 'Romans 1 (NIV)')
    nose.assert_equal(results[2]['title'], 'Revelation 1 (NIV)')
    nose.assert_equal(len(results), 3)
def test_partial_ambiguous():
    """should match books by ambiguous partial name"""
    results = yvs.get_result_list('r')
    nose.assert_equal(len(results), 3)
    nose.assert_equal(results[0]['title'], 'Ruth 1 (NIV)')
    nose.assert_equal(results[1]['title'], 'Romans 1 (NIV)')
    nose.assert_equal(results[2]['title'], 'Revelation 1 (NIV)')
Example #7
0
def test_copy_by_default_true():
    """should export correct data when "Copy By Default?" setting is true"""
    results = yvs.get_result_list('mat 5.3')
    nose.assert_equal(results[0]['variables']['copybydefault'], 'True')
    nose.assert_equal(results[0]['subtitle'], 'Copy content to clipboard')
    nose.assert_equal(results[0]['mods']['cmd']['subtitle'],
                      'View on YouVersion')
def test_output(out):
    """should output ref result list JSON"""
    query_str = 'genesis 50:20'
    yvs.main(query_str)
    output = out.getvalue().rstrip()
    results = yvs.get_result_list(query_str)
    feedback = yvs.core.get_result_list_feedback_str(results).rstrip()
    nose.assert_equal(output, feedback)
def test_output(out):
    """should output ref result list XML"""
    query_str = 'genesis 50:20'
    yvs.main(query_str)
    output = out.getvalue().strip()
    results = yvs.get_result_list(query_str)
    xml = yvs.shared.get_result_list_xml(results).strip()
    nose.assert_equal(output, xml)
def test_nonnumbered_partial():
    """should match numbered books by partial non-numbered name"""
    results = yvs.get_result_list('john')
    nose.assert_equal(len(results), 4)
    nose.assert_equal(results[0]['title'], 'John 1 (NIV)')
    nose.assert_equal(results[1]['title'], '1 John 1 (NIV)')
    nose.assert_equal(results[2]['title'], '2 John 1 (NIV)')
    nose.assert_equal(results[3]['title'], '3 John 1 (NIV)')
Example #11
0
def test_output(out):
    """should output ref result list JSON"""
    query_str = 'genesis 50:20'
    yvs.main(query_str)
    output = out.getvalue().rstrip()
    results = yvs.get_result_list(query_str)
    feedback = yvs.core.get_result_list_feedback_str(results).rstrip()
    nose.assert_equal(output, feedback)
Example #12
0
def test_numbered_nonnumbered_partial():
    """should match numbered and non-numbered books by partial name"""
    results = yvs.get_result_list('c')
    nose.assert_equal(results[0]['title'], 'Colossians 1 (NIV)')
    nose.assert_equal(results[1]['title'], '1 Chronicles 1 (NIV)')
    nose.assert_equal(results[2]['title'], '2 Chronicles 1 (NIV)')
    nose.assert_equal(results[3]['title'], '1 Corinthians 1 (NIV)')
    nose.assert_equal(results[4]['title'], '2 Corinthians 1 (NIV)')
    nose.assert_equal(len(results), 5)
Example #13
0
def test_numbered_nonnumbered_partial():
    """should match numbered and non-numbered books by partial name"""
    results = yvs.get_result_list('c')
    nose.assert_equal(results[0]['title'], 'Colossians 1 (NIV)')
    nose.assert_equal(results[1]['title'], '1 Chronicles 1 (NIV)')
    nose.assert_equal(results[2]['title'], '2 Chronicles 1 (NIV)')
    nose.assert_equal(results[3]['title'], '1 Corinthians 1 (NIV)')
    nose.assert_equal(results[4]['title'], '2 Corinthians 1 (NIV)')
    nose.assert_equal(len(results), 5)
Example #14
0
def test_structure():
    """JSON should match result list"""
    results = yvs.get_result_list('matthew 6:34')
    result = results[0]
    feedback_str = yvs.core.get_result_list_feedback_str(results)
    feedback = json.loads(feedback_str)
    nose.assert_in('items', feedback, 'feedback object must have result items')
    item = feedback['items'][0]
    nose.assert_equal(item['uid'], result['uid'])
    nose.assert_equal(item['arg'], result['arg'])
    nose.assert_equal(item['quicklookurl'],
                      'https://www.bible.com/bible/111/MAT.6.34')
    nose.assert_equal(item['title'], 'Matthew 6:34 (NIV)')
    nose.assert_equal(item['text']['copy'], result['title'])
    nose.assert_equal(item['text']['largetype'], result['title'])
    nose.assert_equal(item['subtitle'], result['subtitle'])
    nose.assert_equal(item['icon']['path'], 'icon.png')
def test_structure():
    """JSON should match result list"""
    results = yvs.get_result_list('matthew 6:34')
    result = results[0]
    feedback_str = yvs.core.get_result_list_feedback_str(results)
    feedback = json.loads(feedback_str)
    nose.assert_in('items', feedback, 'feedback object must have result items')
    item = feedback['items'][0]
    nose.assert_equal(item['uid'], result['uid'])
    nose.assert_equal(item['arg'], result['arg'])
    nose.assert_equal(
        item['quicklookurl'], 'https://www.bible.com/bible/111/MAT.6.34')
    nose.assert_equal(item['valid'], True)
    nose.assert_equal(item['title'], 'Matthew 6:34 (NIV)')
    nose.assert_equal(item['text']['copy'], result['title'])
    nose.assert_equal(item['text']['largetype'], result['title'])
    nose.assert_equal(item['subtitle'], result['subtitle'])
    nose.assert_equal(item['icon']['path'], 'icon.png')
Example #16
0
def test_structure():
    """XML should match result list"""
    results = yvs.get_result_list('matthew 6:34')
    result = results[0]
    xml = yvs.shared.get_result_list_xml(results)
    root = ET.fromstring(xml)
    nose.assert_equal(root.tag, 'items', 'root element must be named <items>')
    item = root.find('item')
    nose.assert_is_not_none(item, '<item> element is missing')
    nose.assert_equal(item.get('uid'), result['uid'])
    nose.assert_equal(item.get('arg'), result['arg'])
    nose.assert_equal(item.get('valid'), 'yes')
    title = item.find('title')
    nose.assert_is_not_none(title, '<title> element is missing')
    copy, largetype = item.findall('text')
    nose.assert_equal(copy.text, result['title'])
    nose.assert_equal(largetype.text, result['title'])
    subtitle = item.find('subtitle')
    nose.assert_is_not_none(subtitle, '<subtitle> element is missing')
    nose.assert_equal(subtitle.text, result['subtitle'])
    icon = item.find('icon')
    nose.assert_is_not_none(icon, '<icon> element is missing')
    nose.assert_equal(icon.text, 'icon.png')
def test_structure():
    """XML should match result list"""
    results = yvs.get_result_list('matthew 6:34')
    result = results[0]
    xml = yvs.shared.get_result_list_xml(results)
    root = ET.fromstring(xml)
    nose.assert_equal(root.tag, 'items',
                      'root element must be named <items>')
    item = root.find('item')
    nose.assert_is_not_none(item, '<item> element is missing')
    nose.assert_equal(item.get('uid'), result['uid'])
    nose.assert_equal(item.get('arg'), result['arg'])
    nose.assert_equal(item.get('valid'), 'yes')
    title = item.find('title')
    nose.assert_is_not_none(title, '<title> element is missing')
    copy, largetype = item.findall('text')
    nose.assert_equal(copy.text, result['title'])
    nose.assert_equal(largetype.text, result['title'])
    subtitle = item.find('subtitle')
    nose.assert_is_not_none(subtitle, '<subtitle> element is missing')
    nose.assert_equal(subtitle.text, result['subtitle'])
    icon = item.find('icon')
    nose.assert_is_not_none(icon, '<icon> element is missing')
    nose.assert_equal(icon.text, 'icon.png')
def test_nonexistent():
    """should use default version for nonexistent versions with no matches"""
    results = yvs.get_result_list('hosea 6:3 xyz')
    nose.assert_equal(results[0]['title'], 'Hosea 6:3 (NIV)')
    nose.assert_equal(len(results), 1)
def test_version_persistence():
    """should remember version preferences"""
    results = yvs.get_result_list('mat 4')
    nose.assert_equal(len(results), 1)
    nose.assert_equal(results[0]['title'], 'Matthew 4 (ESV)')
def test_whitespace():
    """should match versions irrespective of surrounding whitespace"""
    results = yvs.get_result_list('1 peter 5:7    esv')
    nose.assert_equal(results[0]['title'], '1 Peter 5:7 (ESV)')
    nose.assert_equal(len(results), 1)
def test_partial_ambiguous():
    """should match versions by ambiguous partial name"""
    results = yvs.get_result_list('luke 4:8 c')
    nose.assert_equal(results[0]['title'], 'Luke 4:8 (CEB)')
    nose.assert_equal(len(results), 1)
Example #22
0
def test_validity():
    """should return syntactically-valid XML"""
    results = yvs.get_result_list('john 3:16')
    xml = yvs.shared.get_result_list_xml(results)
    nose.assert_is_instance(ET.fromstring(xml), ET.Element)
def test_non_alphanumeric():
    """should not match entirely non-alphanumeric input"""
    results = yvs.get_result_list('!!!')
    nose.assert_equal(len(results), 0)
def test_basic():
    """should match chapters"""
    results = yvs.get_result_list('matthew 5')
    nose.assert_equal(results[0]['title'], 'Matthew 5 (NIV)')
    nose.assert_equal(len(results), 1)
def test_version():
    """should recognize shorthand version syntax"""
    results = yvs.get_result_list('1 co 13esv')
    nose.assert_equal(results[0]['title'], '1 Corinthians 13 (ESV)')
    nose.assert_equal(len(results), 1)
Example #26
0
def test_missing_prefs():
    """should supply missing preferences with defaults"""
    yvs.core.set_user_prefs({})
    results = yvs.get_result_list('mat 5.3')
    nose.assert_equal(len(results), 1)
Example #27
0
def test_invalid_user_version():
    """should raise exception when invalid version is set"""
    with nose.assert_raises(Exception):
        yvs.get_result_list('ph 4')
Example #28
0
def test_language_persistence():
    """should remember language preferences"""
    results = yvs.get_result_list('gá 4')
    nose.assert_equal(results[0]['title'], 'Gálatas 4 (NVI)')
    nose.assert_equal(len(results), 1)
Example #29
0
def test_version_persistence():
    """should remember version preferences"""
    results = yvs.get_result_list('mat 4')
    nose.assert_equal(results[0]['title'], 'Matthew 4 (ESV)')
    nose.assert_equal(len(results), 1)
def test_numbered_puncuation():
    """should match numbered books even if book name contains punctuation """
    results = yvs.get_result_list('1 ch')
    nose.assert_equal(results[0]['title'], '1. Chronik 1 (DELUT)')
    nose.assert_equal(len(results), 1)
Example #31
0
def test_unicode_normalization():
    """should normalize Unicode characters"""
    results = yvs.get_result_list('e\u0301')
    nose.assert_equal(len(results), 0)
def test_id():
    """should use correct ID for chapters"""
    results = yvs.get_result_list('luke 4')
    nose.assert_equal(results[0]['uid'], 'yvs-111/luk.4')
    nose.assert_equal(len(results), 1)
Example #33
0
def test_whitespace():
    """should ignore excessive whitespace"""
    results = yvs.get_result_list('  romans  8  28  a  ')
    nose.assert_equal(len(results), 1)
    nose.assert_equal(results[0]['title'], 'Romans 8:28 (AMP)')
def test_incomplete_verse():
    """should treat incomplete verse reference as chapter reference"""
    results = yvs.get_result_list('psalm 19:')
    nose.assert_equal(len(results), 1)
    nose.assert_equal(results[0]['title'], 'Psalm 19 (NIV)')
def test_language_persistence():
    """should remember language preferences"""
    results = yvs.get_result_list('gá 4')
    nose.assert_equal(len(results), 1)
    nose.assert_equal(results[0]['title'], 'Gálatas 4 (NVI)')
def test_non_ascii():
    """should match versions containing non-ASCII characters"""
    results = yvs.get_result_list('路加 4:8 cunp-上')
    nose.assert_equal(results[0]['title'], '路加福音 4:8 (CUNP-上帝)')
    nose.assert_equal(len(results), 1)
def test_incomplete_verse_range():
    """should treat incomplete verse ranges as single-verse references"""
    results = yvs.get_result_list('psalm 19.7-')
    nose.assert_equal(len(results), 1)
    nose.assert_equal(results[0]['title'], 'Psalm 19:7 (NIV)')
def test_empty():
    """should not match empty input"""
    results = yvs.get_result_list('')
    nose.assert_equal(len(results), 0)
def test_numbered():
    """should match versions ending in number by partial name"""
    results = yvs.get_result_list('lucas 4:8 rvr1')
    nose.assert_equal(results[0]['title'], 'Lucas 4:8 (RVR1960)')
    nose.assert_equal(len(results), 1)
Example #40
0
def test_nonexistent():
    """should not match nonexistent chapters"""
    results = yvs.get_result_list('ps 160')
    nose.assert_equal(len(results), 0)
def test_basic():
    """should match chapters"""
    results = yvs.get_result_list('matthew 5')
    nose.assert_equal(len(results), 1)
    nose.assert_equal(results[0]['title'], 'Matthew 5 (NIV)')
Example #42
0
def test_littered():
    """should ignore non-alphanumeric characters"""
    results = yvs.get_result_list('!1@co#13$4^7&e*')
    nose.assert_equal(len(results), 1)
    nose.assert_equal(results[0]['title'], '1 Corinthians 13:4-7 (ESV)')
def test_partial():
    """should match versions by partial name"""
    results = yvs.get_result_list('luke 4:8 es')
    nose.assert_equal(results[0]['title'], 'Luke 4:8 (ESV)')
    nose.assert_equal(len(results), 1)
Example #44
0
def test_trailing_alphanumeric():
    """should ignore trailing non-matching alphanumeric characters"""
    results = yvs.get_result_list('2 co 3 x y z 1 2 3')
    nose.assert_equal(len(results), 1)
    nose.assert_equal(results[0]['title'], '2 Corinthians 3 (NIV)')
def test_closest_match():
    """should try to find closest match for nonexistent versions"""
    results = yvs.get_result_list('hosea 6:3 nlab')
    nose.assert_equal(results[0]['title'], 'Hosea 6:3 (NLT)')
    nose.assert_equal(len(results), 1)
Example #46
0
def test_unicode_accented():
    """should recognize accented Unicode characters"""
    results = yvs.get_result_list('é 3')
    nose.assert_equal(len(results), 1)
    nose.assert_equal(results[0]['title'], 'Éxodo 3 (NVI)')
def test_id():
    """should use correct ID for versions"""
    results = yvs.get_result_list('malachi 3:2 esv')
    nose.assert_equal(results[0]['uid'], 'yvs-59/mal.3.2')
    nose.assert_equal(len(results), 1)
def test_version_unicode():
    """should allow shorthand Unicode versions"""
    results = yvs.get_result_list('創世記1:3次經')
    nose.assert_equal(results[0]['title'], '創世記 1:3 (次經)')
    nose.assert_equal(len(results), 1)
def test_ambiguous():
    """should match chapters by ambiguous book name"""
    results = yvs.get_result_list('a 3')
    nose.assert_equal(results[0]['title'], 'Amos 3 (NIV)')
    nose.assert_equal(results[1]['title'], 'Acts 3 (NIV)')
    nose.assert_equal(len(results), 2)
def test_ambiguous():
    """should match chapters by ambiguous book name"""
    results = yvs.get_result_list('a 3')
    nose.assert_equal(len(results), 2)
    nose.assert_equal(results[0]['title'], 'Amos 3 (NIV)')
    nose.assert_equal(results[1]['title'], 'Acts 3 (NIV)')
def test_zero_chapter():
    """should interpret chapter zero as chapter one"""
    results = yvs.get_result_list('ps 0')
    nose.assert_equal(results[0]['title'], 'Psalms 1 (NIV)')
    nose.assert_equal(len(results), 1)
def test_id():
    """should use correct ID for chapters"""
    results = yvs.get_result_list('luke 4')
    nose.assert_equal(results[0]['uid'], 'yvs-111/luk.4')