refactor seralizer
This commit is contained in:
@@ -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))
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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__':
|
||||
|
||||
@@ -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__':
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user