예제 #1
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)
예제 #2
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)
예제 #3
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)
예제 #4
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)
예제 #5
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()
예제 #6
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)
예제 #7
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()
예제 #8
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)
예제 #9
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)
예제 #10
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)
예제 #11
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)
예제 #12
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)
예제 #13
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)
예제 #14
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)
예제 #15
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)
예제 #16
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)
예제 #17
0
    def test_notify(self, mock_log):
        method = Mock()
        report = Mock()

        # test
        NectarListener._notify(method, report)

        # validations
        method.assert_called_with(report)

        # test (raised)
        method.side_effect = ValueError()
        NectarListener._notify(method, report)

        # validation
        mock_log.exception.assert_called_with(str(method))
예제 #18
0
    def test_notify(self, mock_log):
        method = Mock()
        report = Mock()

        # test
        NectarListener._notify(method, report)

        # validations
        method.assert_called_with(report)

        # test (raised)
        method.side_effect = ValueError()
        NectarListener._notify(method, report)

        # validation
        mock_log.exception.assert_called_with(str(method))
예제 #19
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)
예제 #20
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)
예제 #21
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()
예제 #22
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)
예제 #23
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()
예제 #24
0
    def test_construction(self):
        batch = Mock()

        # test
        listener = NectarListener(batch)

        # validation
        self.assertEqual(listener.batch, batch)
예제 #25
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)
예제 #26
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)
예제 #27
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)
예제 #28
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)
예제 #29
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)
예제 #30
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)
예제 #31
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)
예제 #32
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)
예제 #33
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)
예제 #34
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)
예제 #35
0
 def test_notification_no_listener(self, *unused):
     request = Request('', {}, '', '')
     container = ContentContainer('')
     event = Event()
     nectar_listener = NectarListener(event, Mock())
     nectar_listener._notify = Mock()
     report = Mock()
     report.data = request
     # started
     nectar_listener.download_started(report)
     self.assertFalse(nectar_listener._notify.called)
     # succeeded
     nectar_listener.download_succeeded(report)
     self.assertFalse(nectar_listener._notify.called)
     # failed
     nectar_listener.download_failed(report)
     self.assertFalse(nectar_listener._notify.called)
예제 #36
0
 def test_notification(self, *unused):
     request = Request('', {}, '', '')
     listener = MockListener()
     listener.download_started = Mock(side_effect=ValueError)
     container = ContentContainer('')
     event = Event()
     nectar_listener = NectarListener(event, Mock(), listener)
     report = Mock()
     report.data = request
     # started
     nectar_listener.download_started(report)
     listener.download_started.assert_called_with(request)
     # succeeded
     nectar_listener.download_succeeded(report)
     listener.download_succeeded.assert_called_with(request)
     # failed
     nectar_listener.download_failed(report)
     listener.download_failed.assert_called_with(request)