예제 #1
0
    def test_construction(self):
        batch = Mock()

        # test
        listener = NectarListener(batch)

        # validation
        self.assertEqual(listener.batch, batch)
예제 #2
0
    def test_construction(self):
        canceled = FakeEvent()
        downloader = Mock()
        listener = Mock()

        # test
        nectar_listener = NectarListener(canceled,
                                         downloader,
                                         listener=listener)
        self.assertEqual(nectar_listener.cancel_event, canceled)
        self.assertEqual(nectar_listener.downloader, downloader)
        self.assertEqual(nectar_listener.listener, listener)
예제 #3
0
    def test_download_started_canceled(self):
        batch = Mock()
        batch.is_canceled = True
        batch.listener = Mock()
        report = Mock()
        report.data = Mock()

        # test
        listener = NectarListener(batch)
        listener.download_started(report)

        # validation
        self.assertFalse(batch.listener.download_started.called)
예제 #4
0
    def test_download_started(self, event):
        batch = Mock()
        batch.listener = Mock()
        report = Mock()
        report.data = Mock()

        # test
        listener = NectarListener(batch)
        listener.download_started(report)

        # validation
        event.assert_called_once_with(report.data)
        event.return_value.assert_called_once_with(batch.listener)
예제 #5
0
    def test_download_started_no_listener(self):
        batch = Mock()
        batch.is_canceled = False
        batch.listener = Mock()
        batch.listener.__nonzero__ = Mock(return_value=False)
        report = Mock()
        report.data = Mock()

        # test
        listener = NectarListener(batch)
        listener.download_started(report)

        # validation
        self.assertFalse(batch.listener.download_started.called)
예제 #6
0
    def test_download_started_no_listener(self):
        canceled = Mock()
        canceled.isSet.return_value = False
        downloader = Mock()
        listener = None
        report = Mock()
        report.data = {'A': 1}

        # test
        nectar_listener = NectarListener(canceled, downloader, listener)
        nectar_listener.download_started(report)

        # validation
        canceled.isSet.assert_called_with()
예제 #7
0
    def test_download_succeeded_canceled(self):
        batch = Mock()
        batch.is_canceled = True
        batch.listener = Mock()
        report = Mock()
        report.data = Mock()

        # test
        listener = NectarListener(batch)
        listener.download_succeeded(report)

        # validation
        self.assertFalse(batch.finished.called)
        self.assertFalse(batch.listener.download_succeeded.called)
        self.assertEqual(listener.total_succeeded, 1)
예제 #8
0
    def test_download_succeeded_and_canceled(self):
        canceled = Mock()
        canceled.isSet.return_value = True
        downloader = Mock()
        listener = Mock()
        report = Mock()
        report.data = Mock()

        # test
        nectar_listener = NectarListener(canceled, downloader, listener)
        nectar_listener.download_succeeded(report)

        # validation
        canceled.isSet.assert_called_with()
        self.assertFalse(listener.download_succeeded.called)
예제 #9
0
    def test_download_succeeded(self, event):
        batch = Mock()
        batch.in_progress = Mock()
        batch.listener = Mock()
        report = Mock()
        report.data = Mock()

        # test
        listener = NectarListener(batch)
        listener.download_succeeded(report)

        # validation
        batch.in_progress.decrement.assert_called_with()
        event.assert_called_once_with(report.data)
        event.return_value.assert_called_once_with(batch.listener)
        self.assertEqual(listener.total_succeeded, 1)
예제 #10
0
    def test_download_succeeded(self):
        batch = Mock()
        batch.is_canceled = False
        batch.in_progress = Mock()
        batch.listener = Mock()
        report = Mock()
        report.data = Mock()

        # test
        listener = NectarListener(batch)
        listener.download_succeeded(report)

        # validation
        batch.in_progress.decrement.assert_called_with()
        batch.listener.download_succeeded.assert_called_with(report.data)
        self.assertEqual(listener.total_succeeded, 1)
예제 #11
0
    def test_download_succeeded_no_listener(self):
        batch = Mock()
        batch.is_canceled = False
        batch.listener = Mock()
        batch.listener.__nonzero__ = Mock(return_value=False)
        report = Mock()
        report.data = Mock()

        # test
        listener = NectarListener(batch)
        listener.download_succeeded(report)

        # validation
        batch.in_progress.decrement.assert_called_with()
        self.assertFalse(batch.listener.download_succeeded.called)
        self.assertEqual(listener.total_succeeded, 1)
예제 #12
0
    def test_download_failed_no_listener(self):
        canceled = Mock()
        canceled.isSet.return_value = False
        downloader = Mock()
        listener = None
        report = Mock()
        request = Mock()
        request.errors = []
        report.data = request

        # test
        nectar_listener = NectarListener(canceled, downloader, listener)
        nectar_listener.download_failed(report)
        self.assertEqual(request.errors, [report.error_msg])

        # validation
        canceled.isSet.assert_called_with()
예제 #13
0
    def test_download_succeeded_no_listener(self):
        canceled = Mock()
        canceled.isSet.return_value = False
        downloader = Mock()
        listener = None
        report = Mock()
        request = Mock()
        request.downloaded = False
        report.data = request

        # test
        nectar_listener = NectarListener(canceled, downloader, listener)
        nectar_listener.download_succeeded(report)

        # validation
        canceled.isSet.assert_called_with()
        self.assertTrue(request.downloaded)
예제 #14
0
    def test_download_failed_canceled(self):
        batch = Mock()
        batch.is_canceled = True
        batch.listener = Mock()
        report = Mock()
        report.data = Mock()
        report.data.errors = []
        report.error_msg = 'something bad happened'

        # test
        listener = NectarListener(batch)
        listener.download_failed(report)

        # validation
        self.assertFalse(batch.dispatch.called)
        self.assertFalse(batch.listener.download_failed.called)
        self.assertEqual(len(report.data.errors), 0)
        self.assertEqual(listener.total_failed, 1)
예제 #15
0
    def test_download_failed_not_dispatched(self, event):
        batch = Mock()
        batch.listener = Mock()
        batch.dispatch.return_value = False
        report = Mock()
        report.data = Mock()
        report.data.errors = []
        report.error_msg = 'something bad happened'

        # test
        listener = NectarListener(batch)
        listener.download_failed(report)

        # validation
        event.assert_called_once_with(report.data)
        event.return_value.assert_called_once_with(batch.listener)
        self.assertEqual(len(report.data.errors), 1)
        self.assertEqual(report.data.errors[0], report.error_msg)
        self.assertEqual(listener.total_failed, 1)
예제 #16
0
    def test_download_failed(self, event):
        batch = Mock()
        batch.listener = Mock()
        batch.dispatch.return_value = True
        batch.in_progress = Mock()
        report = Mock()
        report.data = Mock()
        report.data.errors = []
        report.error_msg = 'something bad happened'

        # test
        listener = NectarListener(batch)
        listener.download_failed(report)

        # validation)
        self.assertFalse(event.called)
        self.assertFalse(batch.in_progress.decrement.called)
        self.assertEqual(len(report.data.errors), 1)
        self.assertEqual(report.data.errors[0], report.error_msg)
        self.assertEqual(listener.total_failed, 1)
예제 #17
0
    def test_download_failed_not_dispatched_no_listener(self):
        batch = Mock()
        batch.is_canceled = False
        batch.listener = Mock()
        batch.listener.__nonzero__ = Mock(return_value=False)
        batch.dispatch.return_value = False
        report = Mock()
        report.data = Mock()
        report.data.errors = []
        report.error_msg = 'something bad happened'

        # test
        listener = NectarListener(batch)
        listener.download_failed(report)

        # validation
        batch.dispatch.assert_called_with(report.data)
        self.assertFalse(batch.listener.download_failed.called)
        self.assertEqual(len(report.data.errors), 1)
        self.assertEqual(report.data.errors[0], report.error_msg)
        self.assertEqual(listener.total_failed, 1)