Ejemplo n.º 1
0
    def test_many_to_many(self):

        # these two feeds share this entry, we want diffengine to support
        # multiple feeds for the same content, which is fairly common at
        # large media organizations with multiple topical feeds
        url = "https://www.washingtonpost.com/classic-apps/how-a-week-of-tweets-by-trump-stoked-anxiety-moved-markets-and-altered-plans/2017/01/07/38be8e64-d436-11e6-9cb0-54ab630851e8_story.html"

        f1 = Feed.create(
            name="feed1",
            url=
            "https://raw.githubusercontent.com/DocNow/diffengine/master/test-data/feed1.xml",
        )
        f1.get_latest()

        f2 = Feed.create(
            name="feed2",
            url=
            "https://raw.githubusercontent.com/DocNow/diffengine/master/test-data/feed2.xml",
        )
        f2.get_latest()

        assert f1.entries.where(Entry.url == url).count() == 1
        assert f2.entries.where(Entry.url == url).count() == 1

        e = Entry.get(Entry.url == url)
        assert FeedEntry.select().where(FeedEntry.entry == e).count() == 2
Ejemplo n.º 2
0
def test_diff():
    f = Feed.get(Feed.url == "https://inkdroid.org/feed.xml")
    e = f.entries[0]
    v1 = e.versions[0]

    # remove some characters from the version
    v1.summary = v1.summary[0:-20]
    v1.save()

    v2 = e.get_latest()
    assert type(v2) == EntryVersion
    assert v2.diff
    assert v2.archive_url is not None
    assert (re.match("^https://web.archive.org/web/[0-9]+/.+$", v2.archive_url)
            is not None)

    diff = v2.diff
    assert diff.old == v1
    assert diff.new == v2
    assert os.path.isfile(diff.html_path)
    assert os.path.isfile(diff.screenshot_path)
    assert os.path.isfile(diff.thumbnail_path)

    # check that the url for the internet archive diff is working
    assert re.match("^https://web.archive.org/web/diff/\d+/\d+/https.+$",
                    diff.url)
Ejemplo n.º 3
0
 def setUp(self) -> None:
     generate_config(test_home,
                     {"db": test_config.get("db", "sqlite:///:memory:")})
     # set things up but disable prompting for initial feed
     init(test_home, prompt=False)
     self.feed = Feed.create(name="Test",
                             url="https://inkdroid.org/feed.xml")
     self.feed.get_latest()
     self.entry = self.feed.entries[0]
     self.version = self.entry.get_latest()
Ejemplo n.º 4
0
def test_whitespace():
    f = Feed.get(url="https://inkdroid.org/feed.xml")
    e = f.entries[0]
    v1 = e.versions[-1]

    # add some whitespace
    v1.summary = v1.summary + "\n\n    "
    v1.save()

    # whitespace should not count when diffing
    v2 = e.get_latest()
    assert v2 == None
Ejemplo n.º 5
0
def test_html_diff():
    f = Feed.get(Feed.url == "https://inkdroid.org/feed.xml")
    e = f.entries[0]

    # add a change to the summary that htmldiff ignores
    v1 = e.versions[-1]
    parts = v1.summary.split()
    parts.insert(2, "<br>   \n")
    v1.summary = " ".join(parts)
    v1.save()

    v2 = e.get_latest()
    assert v2 is None
Ejemplo n.º 6
0
 def test_bad_feed_url(self):
     # bad feed url shouldn't cause a fatal exception
     f = Feed.create(name="feed1", url="http://example.org/feedfeed.xml")
     f.get_latest()
     assert True
Ejemplo n.º 7
0
def test_entry():
    f = Feed.get(Feed.url == "https://inkdroid.org/feed.xml")
    e = f.entries[0]
    v = e.get_latest()
    assert type(v) == EntryVersion
    assert len(e.versions) == 1
Ejemplo n.º 8
0
def test_feed():
    f = Feed.create(name="Test", url="https://inkdroid.org/feed.xml")
    f.get_latest()
    assert f.created
    assert len(f.entries) == 10