From 84b3759cf49f86e283bcacb80bed64d59d482dd8 Mon Sep 17 00:00:00 2001 From: stubbfel Date: Sun, 25 May 2014 20:56:01 +0200 Subject: [PATCH 1/3] add read_feed_file method and feed file class --- src/utilities/feedfile.py | 1 + testenv/tests/utilities/testfeedfile.py | 12 ++++++++++++ 2 files changed, 13 insertions(+) create mode 100644 src/utilities/feedfile.py create mode 100644 testenv/tests/utilities/testfeedfile.py diff --git a/src/utilities/feedfile.py b/src/utilities/feedfile.py new file mode 100644 index 0000000..0dd2404 --- /dev/null +++ b/src/utilities/feedfile.py @@ -0,0 +1 @@ +__author__ = 'stubbfel' diff --git a/testenv/tests/utilities/testfeedfile.py b/testenv/tests/utilities/testfeedfile.py new file mode 100644 index 0000000..0832c4c --- /dev/null +++ b/testenv/tests/utilities/testfeedfile.py @@ -0,0 +1,12 @@ +__author__ = 'stubbfel' + +import unittest + + +class MyTestCase(unittest.TestCase): + def test_something(self): + self.assertEqual(True, False) + + +if __name__ == '__main__': + unittest.main() From eb77523afd3a673c420411af352a5e9aed1dab6e Mon Sep 17 00:00:00 2001 From: stubbfel Date: Fri, 6 Jun 2014 10:13:59 +0200 Subject: [PATCH 2/3] 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() From 6dc4c86e8cea14af9fb6c389eb30041f43ce37a7 Mon Sep 17 00:00:00 2001 From: stubbfel Date: Fri, 6 Jun 2014 10:52:00 +0200 Subject: [PATCH 3/3] add serializer class dummy --- src/utilities/feedfile.py | 13 ++++++++--- src/utilities/serializer.py | 14 ++++++++++++ testenv/tests/utilities/testfeedfile.py | 2 +- testenv/tests/utilities/testserializer.py | 28 +++++++++++++++++++++++ 4 files changed, 53 insertions(+), 4 deletions(-) create mode 100644 src/utilities/serializer.py create mode 100644 testenv/tests/utilities/testserializer.py diff --git a/src/utilities/feedfile.py b/src/utilities/feedfile.py index 5bf78f5..95c7f41 100644 --- a/src/utilities/feedfile.py +++ b/src/utilities/feedfile.py @@ -2,7 +2,7 @@ __author__ = 'stubbfel' import feedparser from utilities.textfile import TextFile - +from utilities.serializer import Serializer class FeedFile(TextFile): @@ -21,11 +21,18 @@ class FeedFile(TextFile): feed_str = self.read_text_file() return feedparser.parse(feed_str) - def write_feed_file(self, feed, serializer): + def write_feed_file(self, feed, serializer=None): + """ + method write a feedparpser object to a text file. It use a certain serializer or the default serializer + if type of the serializer is none + :param feed: expetc FeedparserDict + :param serializer: None or a subclass of Serializer + """ assert isinstance(feed, feedparser.FeedParserDict) if serializer is None: - feed_string = str(feed) + serializer = Serializer() + feed_string = serializer.serialize(feed) else: feed_string = serializer.toString(feed) self.write_text_file(feed_string) \ No newline at end of file diff --git a/src/utilities/serializer.py b/src/utilities/serializer.py new file mode 100644 index 0000000..e8728fc --- /dev/null +++ b/src/utilities/serializer.py @@ -0,0 +1,14 @@ +__author__ = 'stubbfel' + + +class Serializer(): + + def serialize(self, dict_object): + """ + method convert i dict to a string. + this method should be override by any subclasses + :param dict_object: object wich his to bee convert to a string + :return: rhe string reprasention of the dict_object + """ + assert isinstance(dict_object, dict) + return str(dict_object) \ No newline at end of file diff --git a/testenv/tests/utilities/testfeedfile.py b/testenv/tests/utilities/testfeedfile.py index 735c436..8f9a555 100644 --- a/testenv/tests/utilities/testfeedfile.py +++ b/testenv/tests/utilities/testfeedfile.py @@ -5,7 +5,7 @@ import feedparser from utilities.feedfile import FeedFile -class MyTestCase(unittest.TestCase): +class FeedUtilitiesTest(unittest.TestCase): def setUp(self): self.__ff = FeedFile("testfeeds/rss/feed.xml") diff --git a/testenv/tests/utilities/testserializer.py b/testenv/tests/utilities/testserializer.py new file mode 100644 index 0000000..1bb8fe5 --- /dev/null +++ b/testenv/tests/utilities/testserializer.py @@ -0,0 +1,28 @@ +__author__ = 'stubbfel' + +import unittest +from utilities.serializer import Serializer + + +class SerializerUtilitiesTest(unittest.TestCase): + + def setUp(self): + self.__testdict = {"test": "1234", "0815": "Hallo Welt"} + self.__serializer = Serializer() + + def test_serialize(self): + test_string = self.__serializer.serialize(self.__testdict) + test_string2 = str(self.__testdict) + self.assertEqual(test_string, test_string2) + + def test_serialize_error_not_equal(self): + test_string = self.__serializer.serialize(self.__testdict) + test_string2 = "" + self.assertNotEqual(test_string, test_string2) + + def test_serialize_error_raise_assert(self): + self.assertRaises(AssertionError, self.__serializer.serialize, "") + + +if __name__ == '__main__': + unittest.main()