def test_dict_serialization(self): feed = Feed(self.test_name, self.test_uri) feed_dict = feed.to_dict() expected = {'name': self.test_name, 'uri': self.test_uri} self.assertEqual(feed_dict, expected) from_feed = Feed.from_dict(feed_dict) self.assertEqual(from_feed, feed) self.assertEqual(feed_dict, from_feed.to_dict())
def test_from_dict(self): example_name = 'Name here' example_uri = 'URI here' attribute_dict = {'name': example_name, 'uri': example_uri} f = Feed.from_dict(attribute_dict) self.assertEquals(f.name, example_name) self.assertEquals(f.uri, example_uri) # Unsupported attributes should just be ignored invalid = 'invalid' attribute_dict[invalid] = 'better not show up' f = Feed.from_dict(attribute_dict) with self.assertRaises(AttributeError): f.invalid attribute_dict.pop(invalid) # Missing attributes should trigger an error attribute_dict.pop('name') with self.assertRaises(RuntimeError): Feed.from_dict(attribute_dict)
def load_preferences(self) -> None: self.preferences = ensured_read_json_file(self.preferences_directory, self.preferences_file, self.preferences) if 'Feeds' not in self.preferences: self.preferences['Feeds'] = self.default_feeds_preferences() else: feed_object_dict = dict() for feed_name, feed_attributes in self.preferences['Feeds'].items( ): feed_object_dict[feed_name] = Feed.from_dict(feed_attributes) self.preferences['Feeds'] = feed_object_dict
def load_preferences(self): self.preferences = load_file(self.preferences_directory, self.preferences_file, self.preferences) if self.preferences['Feeds'] is None: self.preferences['Feeds'] = self.default_feeds_preferences() else: # Since we used JSON and not pickling, need to transform the serialized feed information into Feed objects feed_object_dict = dict() for feed_name, feed_attributes in self.preferences['Feeds'].items(): feed_object_dict[feed_name] = Feed.from_dict(feed_attributes) self.preferences['Feeds'] = feed_object_dict #self.preferences['Categories'] = self.construct_categories() if self.preferences['Filters'] is None: self.preferences['Filters'] = self.default_filtration_preferences() else: filter_objects = list() for filt, case_sensitive, hide_matches in self.preferences['Filters']: filter_objects.append(ItemFilter(filt, case_sensitive, hide_matches)) self.preferences['Filters'] = filter_objects