Пример #1
0
    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())
Пример #2
0
    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)
Пример #3
0
    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
Пример #4
0
    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