diff --git a/swh/lister/core/tests/conftest.py b/swh/lister/core/tests/conftest.py index ce1039e..5d75455 100644 --- a/swh/lister/core/tests/conftest.py +++ b/swh/lister/core/tests/conftest.py @@ -1,26 +1,27 @@ import pytest @pytest.fixture(scope='session') def celery_enable_logging(): return True @pytest.fixture(scope='session') def celery_includes(): return [ 'swh.lister.bitbucket.tasks', 'swh.lister.debian.tasks', 'swh.lister.github.tasks', 'swh.lister.gitlab.tasks', + 'swh.lister.npm.tasks', ] # override the celery_session_app fixture to monkeypatch the 'main' # swh.scheduler.celery_backend.config.app Celery application # with the test application. @pytest.fixture(scope='session') def swh_app(celery_session_app): import swh.scheduler.celery_backend.config swh.scheduler.celery_backend.config.app = celery_session_app yield celery_session_app diff --git a/swh/lister/npm/tests/conftest.py b/swh/lister/npm/tests/conftest.py new file mode 100644 index 0000000..507fef9 --- /dev/null +++ b/swh/lister/npm/tests/conftest.py @@ -0,0 +1 @@ +from swh.lister.core.tests.conftest import * # noqa diff --git a/swh/lister/npm/tests/test_tasks.py b/swh/lister/npm/tests/test_tasks.py new file mode 100644 index 0000000..9e9deb6 --- /dev/null +++ b/swh/lister/npm/tests/test_tasks.py @@ -0,0 +1,55 @@ +from contextlib import contextmanager +from unittest.mock import patch + + +@contextmanager +def mock_save(lister): + yield + + +def test_ping(swh_app, celery_session_worker): + res = swh_app.send_task( + 'swh.lister.npm.tasks.ping') + assert res + res.wait() + assert res.successful() + assert res.result == 'OK' + + +@patch('swh.lister.npm.tasks.save_registry_state') +@patch('swh.lister.npm.tasks.NpmLister') +def test_lister(lister, save, swh_app, celery_session_worker): + # setup the mocked NpmLister + lister.return_value = lister + lister.run.return_value = None + save.side_effect = mock_save + + res = swh_app.send_task('swh.lister.npm.tasks.NpmListerTask') + assert res + res.wait() + assert res.successful() + + lister.assert_called_once_with() + lister.run.assert_called_once_with() + + +@patch('swh.lister.npm.tasks.save_registry_state') +@patch('swh.lister.npm.tasks.get_last_update_seq') +@patch('swh.lister.npm.tasks.NpmIncrementalLister') +def test_incremental(lister, seq, save, swh_app, celery_session_worker): + # setup the mocked NpmLister + lister.return_value = lister + lister.run.return_value = None + lister.request_headers.return_value = [] + seq.return_value = 42 + save.side_effect = mock_save + + res = swh_app.send_task( + 'swh.lister.npm.tasks.NpmIncrementalListerTask') + assert res + res.wait() + assert res.successful() + + lister.assert_called_once_with() + seq.assert_called_once_with(lister) + lister.run.assert_called_once_with(min_bound=42)