Changeset View
Changeset View
Standalone View
Standalone View
swh/loader/cvs/tests/test_tasks.py
# Copyright (C) 2019-2021 The Software Heritage developers | # Copyright (C) 2019-2022 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 datetime import datetime, timezone | import uuid | ||||
import pytest | import pytest | ||||
from swh.loader.cvs.tasks import convert_to_datetime | from swh.scheduler.model import ListedOrigin, Lister | ||||
from swh.scheduler.utils import create_origin_task_dict | |||||
@pytest.mark.parametrize( | @pytest.fixture(autouse=True) | ||||
"date,expected_result", | def celery_worker_and_swh_config(swh_scheduler_celery_worker, swh_config): | ||||
[ | pass | ||||
(None, None), | |||||
( | |||||
"2021-11-23 09:41:02.434195+00:00", | @pytest.fixture | ||||
datetime(2021, 11, 23, 9, 41, 2, 434195, tzinfo=timezone.utc), | def cvs_lister(): | ||||
), | return Lister(name="cvs-lister", instance_name="example", id=uuid.uuid4()) | ||||
( | |||||
"23112021", | |||||
None, | @pytest.fixture | ||||
), # failure to parse | def cvs_listed_origin(cvs_lister): | ||||
], | return ListedOrigin( | ||||
lister_id=cvs_lister.id, url="https://cvs.example.org/repo", visit_type="cvs" | |||||
) | ) | ||||
def test_convert_to_datetime(date, expected_result): | |||||
assert convert_to_datetime(date) == expected_result | |||||
def test_cvs_loader( | def test_cvs_loader( | ||||
mocker, swh_scheduler_celery_app, swh_scheduler_celery_worker, swh_config | mocker, | ||||
swh_scheduler_celery_app, | |||||
): | |||||
mock_loader = mocker.patch("swh.loader.cvs.loader.CvsLoader.load") | |||||
mock_loader.return_value = {"status": "eventful"} | |||||
res = swh_scheduler_celery_app.send_task( | |||||
"swh.loader.cvs.tasks.LoadCvsRepository", | |||||
kwargs=dict( | |||||
url="some-technical-url", origin_url="origin-url", visit_date="now" | |||||
), | |||||
) | |||||
assert res | |||||
res.wait() | |||||
assert res.successful() | |||||
assert res.result == {"status": "eventful"} | |||||
assert mock_loader.called | |||||
def test_cvs_loader_for_listed_origin( | |||||
mocker, swh_scheduler_celery_app, cvs_lister, cvs_listed_origin | |||||
): | ): | ||||
mock_loader = mocker.patch("swh.loader.cvs.loader.CvsLoader.load") | mock_loader = mocker.patch("swh.loader.cvs.loader.CvsLoader.load") | ||||
mock_loader.return_value = {"status": "eventful"} | mock_loader.return_value = {"status": "eventful"} | ||||
task_dict = create_origin_task_dict(cvs_listed_origin, cvs_lister) | |||||
res = swh_scheduler_celery_app.send_task( | res = swh_scheduler_celery_app.send_task( | ||||
"swh.loader.cvs.tasks.LoadCvsRepository", | "swh.loader.cvs.tasks.LoadCvsRepository", | ||||
kwargs=dict(url="some-technical-url", origin_url="origin-url"), | kwargs=task_dict["arguments"]["kwargs"], | ||||
) | ) | ||||
assert res | assert res | ||||
res.wait() | res.wait() | ||||
assert res.successful() | assert res.successful() | ||||
assert res.result == {"status": "eventful"} | assert res.result == {"status": "eventful"} | ||||
assert mock_loader.called | assert mock_loader.called |