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()