refactor seralizer

This commit is contained in:
stubbfel
2014-07-16 22:01:12 +02:00
parent 94ae91702b
commit 27e884bf67
6 changed files with 55 additions and 19 deletions

View File

@@ -1,10 +1,10 @@
__author__ = 'stubbfel'
import feedparser
from utilities.textfile import TextFile
from utilities.jsonfile import JsonFile
from utilities.serializer import Serializer
class FeedFile(TextFile):
class FeedFile(JsonFile):
def __init__(self, filename):
"""
@@ -21,7 +21,7 @@ class FeedFile(TextFile):
feed_str = self.read_text_file()
return feedparser.parse(feed_str)
def write_feed_file(self, feed, serializer=None):
def write_feedjson_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
@@ -31,8 +31,6 @@ class FeedFile(TextFile):
assert isinstance(feed, feedparser.FeedParserDict)
if serializer is None:
serializer = Serializer()
feed_string = serializer.serialize(feed)
self.write_json_file(feed)
else:
feed_string = serializer.toString(feed)
self.write_text_file(feed_string)
self.write_json_file(serializer.serialize(feed))

View File

@@ -1,5 +1,5 @@
__author__ = 'dev'
import json
from utilities.serializer import Serializer
class PodcastSerializer(Serializer):
@@ -12,4 +12,27 @@ class PodcastSerializer(Serializer):
:return: rhe string reprasention of the dict_object
"""
assert isinstance(dict_object, dict)
return str(dict_object)
episodeList = []
for episode in dict_object["entries"]:
filelink = ""
for links in episode["links"]:
if links["type"] == 'application/x-bittorrent':
filelink = links["href"]
tempepisode = {
"title": episode["title"],
"subtitle": episode["subtitle"],
"filelink": filelink
}
episodeList.append(tempepisode)
tempdict = {
"title": dict_object["feed"]["title"],
"subtitle": dict_object["feed"]["subtitle"],
"summary": dict_object["feed"]["summary"],
"episodes": episodeList
}
return tempdict

View File

@@ -9,6 +9,7 @@ class Serializer():
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
:depicated
"""
assert isinstance(dict_object, dict)
return str(dict_object)
return dict_object

View File

@@ -13,11 +13,11 @@ class FeedUtilitiesTest(unittest.TestCase):
feed = self.__ff.read_feed_file()
self.assertTrue(isinstance(feed, feedparser.FeedParserDict))
def test_write_feed_file(self):
def test_json_feed_file(self):
feed = self.__ff.read_feed_file()
ff2 = FeedFile("testfeed.xml")
serializer = None
ff2.write_feed_file(feed, serializer)
ff2.write_feedjson_file(feed, serializer)
feed2 = ff2.read_feed_file()
self.assertTrue(isinstance(feed2, feedparser.FeedParserDict))
ff2.check_and_remove_file()
@@ -27,7 +27,7 @@ class FeedUtilitiesTest(unittest.TestCase):
feed = "Fail"
ff2 = FeedFile("testfeed.xml")
serializer = None
self.assertRaises(AssertionError, ff2.write_feed_file, feed, serializer)
self.assertRaises(AssertionError, ff2.write_feedjson_file, feed, serializer)
ff2.check_and_remove_file()
if __name__ == '__main__':

View File

@@ -1,11 +1,26 @@
__author__ = 'dev'
import unittest
from utilities.podcastserializer import PodcastSerializer
from utilities.feedfile import FeedFile
class PodCastSerializerUtilitiesTest(unittest.TestCase):
def setUp(self):
self.__podcastfeed= FeedFile("testfeeds/podcast/sbk.xml").read_feed_file()
self.__serializer = PodcastSerializer()
def test_serialize(self):
ff2 = FeedFile("testfeed.json")
ff2.write_feedjson_file(self.__podcastfeed, self.__serializer)
feed = ff2.read_json_file()
self.assertIsNotNone(feed)
self.assertIsInstance(feed, dict)
self.assertNotEqual(feed, self.__podcastfeed)
ff2.check_and_remove_file();
class MyTestCase(unittest.TestCase):
def test_something(self):
self.assertEqual(True, False)
if __name__ == '__main__':

View File

@@ -11,9 +11,8 @@ class SerializerUtilitiesTest(unittest.TestCase):
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)
test_ser = self.__serializer.serialize(self.__testdict)
self.assertEqual(test_ser, self.__testdict)
def test_serialize_error_not_equal(self):
test_string = self.__serializer.serialize(self.__testdict)