Esempio n. 1
0
def test_subscriptions_broken_no_body():
    mysubscriptions = Subscriptions()
    Feed.__init__ = mock.MagicMock(return_value=None)
    with pytest.raises(SubscriptionsStructureError):
        mysubscriptions.load(my_dir + "/subscriptions/broken_no_body.xml")
        for generated in mysubscriptions.parse():
            pass
Esempio n. 2
0
def test_subscriptions_parse_feedparseerror():
    Feed.__init__ = mock.MagicMock(return_value=None)
    Feed.__init__.side_effect = FeedParseError()

    mysubscriptions = Subscriptions()
    mysubscriptions.load(my_dir + "/subscriptions/valid_complete.xml")
    for generated in mysubscriptions.parse():
        assert isinstance(generated[1], FeedParseError)
Esempio n. 3
0
def test_subscriptions_broken_no_outline():
    mysubscriptions = Subscriptions()
    Feed.__init__ = mock.MagicMock(return_value=None)
    mysubscriptions.load(my_dir + "/subscriptions/broken_no_outline.xml")

    count = 0
    for generated in mysubscriptions.parse():
        count += 1
    assert count == 0
Esempio n. 4
0
def test_subscriptions_generate():
    feed1 = mock.MagicMock()
    feed2 = mock.MagicMock()
    mysubscriptions = Subscriptions()
    mysubscriptions.generate([feed1, feed2])

    Feed.__init__ = mock.MagicMock(return_value=None)
    for generated in mysubscriptions.parse():
        pass
    assert len(mysubscriptions.feeds) == 2
Esempio n. 5
0
def test_subscriptions_valid_no_head():
    mysubscriptions = Subscriptions()
    Feed.__init__ = mock.MagicMock(return_value=None)
    mysubscriptions.load(my_dir + "/subscriptions/valid_no_head.xml")
    for generated in mysubscriptions.parse():
        pass
    assert isinstance(mysubscriptions, Subscriptions)
    Feed.__init__.assert_any_call(url="http://feed1")
    Feed.__init__.assert_any_call(url="http://feed2")
    assert Feed.__init__.call_count == 2
    assert len(mysubscriptions.feeds) == 2
Esempio n. 6
0
def import_subscriptions(path: str, database: Database) -> None:
    subscriptions = Subscriptions()

    # Load may raise an error, but they are user-friendly enough that we don't
    # need to catch them here. It's also okay to crash at this point.
    subscriptions.load(path)

    for generated in subscriptions.parse():
        if isinstance(generated, Feed):
            feed = generated
            database.replace_feed(feed)
            episodes = feed.parse_episodes()
            database.replace_episodes(feed, episodes)
            print("Added \"%s\" with %d episodes" % (str(feed), len(episodes)))
        else:
            print("ERROR: Failed to load %s -- %s" %
                  (str(generated[0]), str(generated[1])))

    print("Imported %d feeds" % len(subscriptions.feeds))