Ejemplo n.º 1
0
class FeedPollerServiceTests(TestCase):
    """
    Tests for :class:`otter.indexer.poller.FeedPollerService`
    """
    def setUp(self):
        """
        Create a FeedPollerService with a mock agent, TimerService,
        and cooperator that do not use the real reactor
        """
        self.handler = mock.Mock()
        self.agent = mock.Mock(Agent)
        self.timer = mock.Mock(TimerService)

        self.cooperator = Cooperator(scheduler=lambda x: x(), started=True)

        self.poller = FeedPollerService(self.agent,
                                        'http://example.com/feed',
                                        [self.handler],
                                        TimerService=self.timer,
                                        coiterate=self.cooperator.coiterate)

        self.poll = self.timer.mock_calls[0][1][1]

    def test_startService(self):
        """
        ``startService`` calls the TimerService's ``startService``
        """
        self.poller.startService()
        self.timer.return_value.startService.assert_called_once_with()

    def test_stopService(self):
        """
        ``stopService`` calls the TimerService's ``stopService``
        """
        self.poller.stopService()
        self.timer.return_value.stopService.assert_called_once_with()

    def test_poll(self):
        """
        During a polling interval, a request is made to the URL specified
        to the constructor of the FeedPollerService, and the response from the
        server is parsed into atom entries, which are then passed to the
        handler.
        """
        self.agent.request.return_value = feed_response('simple.atom')

        self.poll()

        self.agent.request.assert_called_once_with('GET',
                                                   'http://example.com/feed',
                                                   Headers({}), None)

        self.handler.assert_called_once_with(mock.ANY)
        entry = self.handler.mock_calls[0][1][0]

        self.assertEqual(
            entry.find('./{http://www.w3.org/2005/Atom}id').text,
            'urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a')
Ejemplo n.º 2
0
class FeedPollerServiceTests(SynchronousTestCase):
    """
    Tests for :class:`otter.indexer.poller.FeedPollerService`
    """

    def setUp(self):
        """
        Create a FeedPollerService with a mock agent, TimerService,
        and cooperator that do not use the real reactor
        """
        self.handler = mock.Mock()
        self.agent = mock.Mock(Agent)
        self.timer = mock.Mock(TimerService)

        self.cooperator = Cooperator(
            scheduler=lambda x: x(),
            started=True
        )

        self.poller = FeedPollerService(
            self.agent, 'http://example.com/feed',
            [self.handler],
            TimerService=self.timer,
            coiterate=self.cooperator.coiterate
        )

        self.poll = self.timer.mock_calls[0][1][1]

    def test_startService(self):
        """
        ``startService`` calls the TimerService's ``startService``
        """
        self.poller.startService()
        self.timer.return_value.startService.assert_called_once_with()

    def test_stopService(self):
        """
        ``stopService`` calls the TimerService's ``stopService``
        """
        self.poller.stopService()
        self.timer.return_value.stopService.assert_called_once_with()

    def test_poll(self):
        """
        During a polling interval, a request is made to the URL specified
        to the constructor of the FeedPollerService, and the response from the
        server is parsed into atom entries, which are then passed to the
        handler.
        """
        self.agent.request.return_value = feed_response('simple.atom')

        self.poll()

        self.agent.request.assert_called_once_with(
            'GET',
            'http://example.com/feed',
            Headers({}),
            None
        )

        self.handler.assert_called_once_with(mock.ANY)
        entry = self.handler.mock_calls[0][1][0]

        self.assertEqual(
            entry.find('./{http://www.w3.org/2005/Atom}id').text,
            'urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a'
        )