Changeset View
Changeset View
Standalone View
Standalone View
swh/lister/npm/tests/test_tasks.py
# Copyright (C) 2019-2020 The Software Heritage developers | # Copyright (C) 2019-2021 The Software Heritage developers | ||||
# See the AUTHORS file at the top-level directory of this distribution | # See the AUTHORS file at the top-level directory of this distribution | ||||
# License: GNU General Public License version 3, or any later version | # License: GNU General Public License version 3, or any later version | ||||
# See top-level LICENSE file for more information | # See top-level LICENSE file for more information | ||||
from contextlib import contextmanager | from swh.lister.pattern import ListerStats | ||||
from unittest.mock import patch | |||||
@contextmanager | |||||
def mock_save(lister): | |||||
yield | |||||
def test_ping(swh_scheduler_celery_app, swh_scheduler_celery_worker): | def test_ping(swh_scheduler_celery_app, swh_scheduler_celery_worker): | ||||
res = swh_scheduler_celery_app.send_task("swh.lister.npm.tasks.ping") | res = swh_scheduler_celery_app.send_task("swh.lister.npm.tasks.ping") | ||||
assert res | assert res | ||||
res.wait() | res.wait() | ||||
assert res.successful() | assert res.successful() | ||||
assert res.result == "OK" | assert res.result == "OK" | ||||
@patch("swh.lister.npm.tasks.save_registry_state") | def test_full_lister_task( | ||||
@patch("swh.lister.npm.tasks.NpmLister") | swh_scheduler_celery_app, swh_scheduler_celery_worker, mocker | ||||
def test_lister(lister, save, swh_scheduler_celery_app, swh_scheduler_celery_worker): | ): | ||||
# setup the mocked NpmLister | stats = ListerStats(pages=10, origins=900) | ||||
lister.return_value = lister | mock_lister = mocker.patch("swh.lister.npm.tasks.NpmLister") | ||||
lister.run.return_value = None | mock_lister.from_configfile.return_value = mock_lister | ||||
save.side_effect = mock_save | mock_lister.run.return_value = stats | ||||
res = swh_scheduler_celery_app.send_task("swh.lister.npm.tasks.NpmListerTask") | res = swh_scheduler_celery_app.send_task("swh.lister.npm.tasks.NpmListerTask") | ||||
assert res | assert res | ||||
res.wait() | res.wait() | ||||
assert res.successful() | assert res.successful() | ||||
lister.assert_called_once_with() | mock_lister.from_configfile.assert_called_once_with(incremental=False) | ||||
lister.run.assert_called_once_with() | mock_lister.run.assert_called_once_with() | ||||
assert res.result == stats.dict() | |||||
@patch("swh.lister.npm.tasks.save_registry_state") | def test_incremental_lister_task( | ||||
@patch("swh.lister.npm.tasks.get_last_update_seq") | swh_scheduler_celery_app, swh_scheduler_celery_worker, mocker | ||||
@patch("swh.lister.npm.tasks.NpmIncrementalLister") | |||||
def test_incremental( | |||||
lister, seq, save, swh_scheduler_celery_app, swh_scheduler_celery_worker | |||||
): | ): | ||||
# setup the mocked NpmLister | stats = ListerStats(pages=10, origins=900) | ||||
lister.return_value = lister | mock_lister = mocker.patch("swh.lister.npm.tasks.NpmLister") | ||||
lister.run.return_value = None | mock_lister.from_configfile.return_value = mock_lister | ||||
seq.return_value = 42 | mock_lister.run.return_value = stats | ||||
save.side_effect = mock_save | |||||
res = swh_scheduler_celery_app.send_task( | res = swh_scheduler_celery_app.send_task( | ||||
"swh.lister.npm.tasks.NpmIncrementalListerTask" | "swh.lister.npm.tasks.NpmIncrementalListerTask" | ||||
) | ) | ||||
assert res | assert res | ||||
res.wait() | res.wait() | ||||
assert res.successful() | assert res.successful() | ||||
lister.assert_called_once_with() | mock_lister.from_configfile.assert_called_once_with(incremental=True) | ||||
seq.assert_called_once_with(lister) | mock_lister.run.assert_called_once_with() | ||||
lister.run.assert_called_once_with(min_bound=42) | assert res.result == stats.dict() |