def test_update_blank_title_from_linker(create_good_web_page):
    result, webpage, data = create_good_web_page[
        "result"], create_good_web_page["webpage"], create_good_web_page[
            "data"]
    print(webpage.contents())
    assert result == "saved"

    data["title"] = ""

    assert WebPage().add_or_update_from_linker(data) == "saved"
    print(WebPage().load({"url": data["url"]}).contents())
    assert WebPage().load({"url": data["url"]}).title == title_good_url
def test_add_and_update_with_same_data(create_good_web_page):
    # create a page and then try to add_or_update it with same data and assert it fails
    result, webpage, data = create_good_web_page[
        "result"], create_good_web_page["webpage"], create_good_web_page[
            "data"]
    assert result == "saved"
    assert WebPage().add_or_update_from_linker(data) == "excluded"
def test_add_and_update_good_url_from_linker(create_good_web_page):
    #blogs.timesofisrael.com is a whitelisted site with refs and good title so it should be added to the linker,
    #so make sure attempting to do so succeeds
    result, webpage, data = create_good_web_page[
        "result"], create_good_web_page["webpage"], create_good_web_page[
            "data"]
    assert result == "saved"
    linker_hits = webpage.linkerHits

    # now, we simply update an existing site with different refs and make sure it updated
    data['refs'] = ["Genesis 3:3", 'Exodus 3:10']

    assert WebPage().add_or_update_from_linker(data) == "saved"
    assert set(WebPage().load({
        "url": data["url"]
    }).refs) == set(["Genesis 3:3", 'Exodus 3:10'])
    assert WebPage().load({"url": data["url"]}).linkerHits == linker_hits + 1
def create_good_web_page():
    data_good_url = {
        'url':
        'http://blogs.timesofisrael.com/dvar-torah2',
        'title':
        title_good_url,
        'description':
        'A Dvar Torah on Times of Israel',
        'refs': [
            "Haamek Davar on Genesis, Kidmat Ha'Emek 1",
            'Shulchan Aruch, Orach Chaim 7:1'
        ]
    }

    result = WebPage().add_or_update_from_linker(data_good_url)
    webpage = WebPage().load({"url": data_good_url["url"]})
    yield {"result": result, "webpage": webpage, "data": data_good_url}
    WebPage().load({"url": data_good_url["url"]}).delete()
def test_add_bad_title_from_linker():
    # http://rabbisacks.com/archives should not be added because it has a title we do not want

    data = {
        'url': 'http://rabbisacks.org/archives',
        'title': 'Page 1 of 2',
        'description': 'A Page We Do Not Want',
        'refs': ["Genesis 1:1"]
    }

    assert WebPage().add_or_update_from_linker(data) == "excluded"
def test_add_no_refs_from_linker():
    # blogs.timesofisrael.com/random should not be added to the linker, because it contains no refs
    # even though it's a good URL

    data = {
        'url': 'http://blogs.timesofisrael.com/random',
        'title': 'Random Blog',
        'description': 'A Page We Do Not Want',
        'refs': []
    }

    assert WebPage().add_or_update_from_linker(data) == "excluded"
def test_add_bad_domain_from_linker():
    #localhost:8000 should not be added to the linker, so make sure attempting to do so fails

    data = {
        'url':
        'http://localhost:8000/static/test/linker_test.html',
        'title':
        'Linker Test Page',
        'description':
        'A Page We Do Not Want',
        'refs': [
            "Haamek Davar on Genesis, Kidmat Ha'Emek 1",
            'Shulchan Aruch, Orach Chaim 7:1'
        ]
    }

    assert WebPage().add_or_update_from_linker(data) == "excluded"
def test_add_search_URL():
    urls = [
        "https://opensiddur.org/search/",
        "https://opensiddur.org/search?q=prayer",
        "https://opensiddur.org/search"
    ]
    for url in urls:
        linker_data = {
            'url':
            url,
            'title':
            '"On Prayer," by Abraham Joshua Heschel (1969) • the Open Siddur Project ✍ פְּרוֺיֶּקט הַסִּדּוּר הַפָּתוּחַ',
            'description':
            'Rabbi Dr. Abraham Joshua Heschel\'s speech, "On Prayer," delivered at an inter-religious convocation held under the auspices of the U.S. Liturgical Conference in Milwaukee, Wisconsin, on August 28, 1969. His talk was printed in the journal Conservative Judaism v.25:1 Fall 1970, p.1-12.   . . .',
            'refs': [
                'Psalms 1–41', 'Psalms 42–72', 'Psalms 73–89', 'Psalms 90–106',
                'Psalms 107–150', 'Psalms 130:1', 'Psalms 63:2-4',
                'Psalms 42:2-4'
            ]
        }
        assert WebPage.add_or_update_from_linker(linker_data) == "excluded"