|
8 | 8 | SPIDERMON_JOBS_COMPARISON_STATES, |
9 | 9 | SPIDERMON_JOBS_COMPARISON_TAGS, |
10 | 10 | SPIDERMON_JOBS_COMPARISON_THRESHOLD, |
| 11 | + SPIDERMON_JOBS_COMPARISON_ARGUMENTS, |
11 | 12 | SPIDERMON_JOBS_COMPARISON_CLOSE_REASONS, |
12 | 13 | ZyteJobsComparisonMonitor, |
13 | 14 | monitors, |
@@ -45,6 +46,15 @@ def get_paginated_jobs(**kwargs): |
45 | 46 | return mocked_job_meta |
46 | 47 |
|
47 | 48 |
|
| 49 | +def get_paginated_jobs_with_one_args(**kwargs): |
| 50 | + mocked_job_meta = [] |
| 51 | + for _ in range(kwargs["count"]): |
| 52 | + mocked_job_meta.append( |
| 53 | + {"spider_args": {"args1": True}, "close_reason": "finished"} |
| 54 | + ) |
| 55 | + return mocked_job_meta |
| 56 | + |
| 57 | + |
48 | 58 | def get_paginated_jobs_arg_finished(**kwargs): |
49 | 59 | mocked_job_meta = [] |
50 | 60 | for _ in range(kwargs["count"]): |
@@ -286,6 +296,32 @@ def test_jobs_comparison_monitor_get_jobs(): |
286 | 296 | assert len(jobs) == 50 |
287 | 297 | mock_client.spider.jobs.list.assert_called_once() |
288 | 298 |
|
| 299 | + mock_client = Mock() |
| 300 | + with patch( |
| 301 | + "spidermon.contrib.scrapy.monitors.monitors.Client" |
| 302 | + ) as mock_client_class: |
| 303 | + mock_client_class.return_value = mock_client |
| 304 | + monitor = TestZyteJobsComparisonMonitor() |
| 305 | + monitor._get_tags_to_filter = Mock(side_effect=lambda: None) |
| 306 | + monitor.data = Mock() |
| 307 | + |
| 308 | + def mock_getlist(key, default=None): |
| 309 | + data = { |
| 310 | + SPIDERMON_JOBS_COMPARISON_CLOSE_REASONS: ["finished"], |
| 311 | + SPIDERMON_JOBS_COMPARISON_ARGUMENTS: [], |
| 312 | + } |
| 313 | + return data.get(key, default) |
| 314 | + |
| 315 | + monitor.crawler.settings = Mock() |
| 316 | + monitor.crawler.settings.getlist.side_effect = mock_getlist |
| 317 | + monitor.crawler.settings.getbool.return_value = True |
| 318 | + mock_client.spider.jobs.list = Mock(side_effect=get_paginated_jobs_arg_finished) |
| 319 | + |
| 320 | + # Return 0 number of jobs |
| 321 | + jobs = monitor._get_jobs(states=None, number_of_jobs=5) |
| 322 | + assert len(jobs) == 0 |
| 323 | + mock_client.spider.jobs.list.assert_called_once() |
| 324 | + |
289 | 325 |
|
290 | 326 | @pytest.mark.parametrize( |
291 | 327 | ["item_count", "previous_counts", "threshold", "should_raise"], |
|
0 commit comments