def schedule(self, spider, args=None, settings=None, target='default'): try: conf = self.config.get_target_conf(target) schedule_spider( conf.project_id, conf.endpoint, conf.apikey, spider, arguments=args or (), settings=settings or ()) except self.EXCEPTIONS as e: raise JsonApiGeneralException( e.format_message(), self.STATUS_CODES.get(getattr(e, 'exit_code', None), 500), )
def test_schedule_spider_calls_project_schedule(self, mock_conn): mock_proj = mock_conn.return_value.__getitem__.return_value schedule.schedule_spider(1, 'https://endpoint/api/scrapyd', 'FAKE_API_KEY', 'fake_spider') self.assertTrue(mock_proj.schedule.called)
def test_schedule_invalid_spider(self, mock_conn): mock_proj = mock_conn.return_value.__getitem__.return_value mock_proj.schedule.side_effect = APIError('') with self.assertRaises(RemoteErrorException): schedule.schedule_spider(1, 'https://endpoint/api/scrapyd', 'FAKE_API_KEY', 'fake_spider')
def test_schedule_spider_calls_project_schedule(self, mock_conn): mock_proj = mock_conn.return_value.__getitem__.return_value schedule.schedule_spider(1, 'https://endpoint/api/', 'FAKE_API_KEY', 'fake_spider') self.assertTrue(mock_proj.schedule.called)
def test_schedule_invalid_spider(self, mock_conn): mock_proj = mock_conn.return_value.__getitem__.return_value mock_proj.schedule.side_effect = APIError('') with self.assertRaises(RemoteErrorException): schedule.schedule_spider(1, 'https://endpoint/api/', 'FAKE_API_KEY', 'fake_spider')
def test_schedule_spider_calls_project_jobs_run(self, mock_client): mock_proj = mock_client.return_value.get_project.return_value schedule.schedule_spider(1, 'https://endpoint/api/', 'FAKE_API_KEY', 'fake_spider') self.assertTrue(mock_proj.jobs.run)
def test_schedule_invalid_spider(self, mock_client): mock_proj = mock_client.return_value.get_project.return_value mock_proj.jobs.run.side_effect = ScrapinghubAPIError('') with self.assertRaises(RemoteErrorException): schedule.schedule_spider(1, 'https://endpoint/api/', 'FAKE_API_KEY', 'fake_spider')