From eb77523afd3a673c420411af352a5e9aed1dab6e Mon Sep 17 00:00:00 2001 From: stubbfel Date: Fri, 6 Jun 2014 10:13:59 +0200 Subject: [PATCH] add simple write method --- src/utilities/feedfile.py | 30 +++++++++++++++++++++++++ testenv/tests/utilities/testfeedfile.py | 26 +++++++++++++++++++-- 2 files changed, 54 insertions(+), 2 deletions(-) diff --git a/src/utilities/feedfile.py b/src/utilities/feedfile.py index 0dd2404..5bf78f5 100644 --- a/src/utilities/feedfile.py +++ b/src/utilities/feedfile.py @@ -1 +1,31 @@ __author__ = 'stubbfel' + +import feedparser +from utilities.textfile import TextFile + + +class FeedFile(TextFile): + + def __init__(self, filename): + """ + init class + :param filename: path to the file + """ + super(FeedFile, self).__init__(filename) + + def read_feed_file(self): + """ + method read and convert the content of the file to a FeedParserDict + :return: dict - feed object + """ + feed_str = self.read_text_file() + return feedparser.parse(feed_str) + + def write_feed_file(self, feed, serializer): + assert isinstance(feed, feedparser.FeedParserDict) + + if serializer is None: + feed_string = str(feed) + else: + feed_string = serializer.toString(feed) + self.write_text_file(feed_string) \ No newline at end of file diff --git a/testenv/tests/utilities/testfeedfile.py b/testenv/tests/utilities/testfeedfile.py index 0832c4c..735c436 100644 --- a/testenv/tests/utilities/testfeedfile.py +++ b/testenv/tests/utilities/testfeedfile.py @@ -1,12 +1,34 @@ __author__ = 'stubbfel' import unittest +import feedparser +from utilities.feedfile import FeedFile class MyTestCase(unittest.TestCase): - def test_something(self): - self.assertEqual(True, False) + def setUp(self): + self.__ff = FeedFile("testfeeds/rss/feed.xml") + def test_read_feed_file(self): + feed = self.__ff.read_feed_file() + self.assertTrue(isinstance(feed, feedparser.FeedParserDict)) + + def test_write_feed_file(self): + feed = self.__ff.read_feed_file() + ff2 = FeedFile("testfeed.xml") + serializer = None + ff2.write_feed_file(feed, serializer) + feed2 = ff2.read_feed_file() + self.assertTrue(isinstance(feed2, feedparser.FeedParserDict)) + ff2.check_and_remove_file() + # self.assertDictEqual(feed, feed2) + + def test_write_feed_file_none_feedparser_object(self): + feed = "Fail" + ff2 = FeedFile("testfeed.xml") + serializer = None + self.assertRaises(AssertionError, ff2.write_feed_file, feed, serializer) + ff2.check_and_remove_file() if __name__ == '__main__': unittest.main()