예제 #1
0
    def setup_manager(self, feed_data, max_entries=DEFAULT_MAX_ENTRIES):
        """Set up feed manager."""
        events = []

        @callback
        def record_event(event):
            """Add recorded event to set."""
            events.append(event)

        self.hass.bus.listen(EVENT_FEEDREADER, record_event)

        # Loading raw data from fixture and plug in to data object as URL
        # works since the third-party feedparser library accepts a URL
        # as well as the actual data.
        data_file = self.hass.config.path(f"{feedreader.DOMAIN}.pickle")
        storage = StoredData(data_file)
        with patch("homeassistant.components.feedreader.track_time_interval"
                   ) as track_method:
            manager = FeedManager(feed_data, DEFAULT_SCAN_INTERVAL,
                                  max_entries, self.hass, storage)
            # Can't use 'assert_called_once' here because it's not available
            # in Python 3.5 yet.
            track_method.assert_called_once_with(self.hass, mock.ANY,
                                                 DEFAULT_SCAN_INTERVAL)
        # Artificially trigger update.
        self.hass.bus.fire(EVENT_HOMEASSISTANT_START)
        # Collect events.
        self.hass.block_till_done()
        return manager, events
예제 #2
0
 def test_feed_parsing_failed(self, mock_parse):
     """Test feed where parsing fails."""
     data_file = self.hass.config.path(f"{feedreader.DOMAIN}.pickle")
     storage = StoredData(data_file)
     manager = FeedManager("FEED DATA", DEFAULT_SCAN_INTERVAL,
                           DEFAULT_MAX_ENTRIES, self.hass, storage)
     # Artificially trigger update.
     self.hass.bus.fire(EVENT_HOMEASSISTANT_START)
     # Collect events.
     self.hass.block_till_done()
     assert manager.last_update_successful is False