Changeset View
Changeset View
Standalone View
Standalone View
swh/web/tests/common/test_origin_save.py
Show First 20 Lines • Show All 233 Lines • ▼ Show 20 Lines | def _get_save_origin_requests( | ||||
mocker, load_status, visit_status, request_date: Optional[datetime] = None | mocker, load_status, visit_status, request_date: Optional[datetime] = None | ||||
): | ): | ||||
"""Wrapper around the get_origin_save_origin_request call. | """Wrapper around the get_origin_save_origin_request call. | ||||
""" | """ | ||||
SaveOriginRequest.objects.create( | SaveOriginRequest.objects.create( | ||||
request_date=datetime.now(tz=timezone.utc), | request_date=datetime.now(tz=timezone.utc), | ||||
visit_type=_visit_type, | visit_type=_visit_type, | ||||
visit_status=visit_status, | |||||
origin_url=_origin_url, | origin_url=_origin_url, | ||||
status=SAVE_REQUEST_ACCEPTED, | status=SAVE_REQUEST_ACCEPTED, | ||||
visit_date=None, | visit_date=None, | ||||
loading_task_id=_task_id, | loading_task_id=_task_id, | ||||
) | ) | ||||
# mock scheduler and archives | # mock scheduler and archives | ||||
_mock_scheduler( | _mock_scheduler( | ||||
Show All 33 Lines | def test_get_save_origin_requests_no_visit_date_found(mocker, visit_status): | ||||
""" | """ | ||||
sors = _get_save_origin_requests( | sors = _get_save_origin_requests( | ||||
mocker, load_status="scheduled", visit_status=visit_status, | mocker, load_status="scheduled", visit_status=visit_status, | ||||
) | ) | ||||
# check no visit date has been found | # check no visit date has been found | ||||
assert len(sors) == 1 | assert len(sors) == 1 | ||||
assert sors[0]["save_task_status"] == SAVE_TASK_RUNNING | assert sors[0]["save_task_status"] == SAVE_TASK_RUNNING | ||||
assert sors[0]["visit_date"] is None | assert sors[0]["visit_date"] is None | ||||
assert sors[0]["visit_status"] == visit_status | |||||
@pytest.mark.django_db | @pytest.mark.django_db | ||||
@pytest.mark.parametrize("visit_status", ["not_found", "failed",]) | @pytest.mark.parametrize("visit_status", ["not_found", "failed",]) | ||||
def test_get_save_origin_requests_no_failed_status_override(mocker, visit_status): | def test_get_save_origin_requests_no_failed_status_override(mocker, visit_status): | ||||
"""Uneventful visits with failed statuses (failed, not found) are marked as failed | """Uneventful visits with failed statuses (failed, not found) are marked as failed | ||||
""" | """ | ||||
sors = _get_save_origin_requests( | sors = _get_save_origin_requests( | ||||
mocker, load_status="uneventful", visit_status=visit_status | mocker, load_status="uneventful", visit_status=visit_status | ||||
) | ) | ||||
assert len(sors) == 1 | assert len(sors) == 1 | ||||
assert sors[0]["save_task_status"] == SAVE_TASK_FAILED | assert sors[0]["save_task_status"] == SAVE_TASK_FAILED | ||||
visit_date = sors[0]["visit_date"] | visit_date = sors[0]["visit_date"] | ||||
if visit_status == "failed": | if visit_status == "failed": | ||||
assert visit_date is None | assert visit_date is None | ||||
else: | else: | ||||
assert visit_date is not None | assert visit_date is not None | ||||
sors = get_save_origin_requests(_visit_type, _origin_url) | sors = get_save_origin_requests(_visit_type, _origin_url) | ||||
assert len(sors) == 1 | assert len(sors) == 1 | ||||
assert sors[0]["save_task_status"] == SAVE_TASK_FAILED | assert sors[0]["save_task_status"] == SAVE_TASK_FAILED | ||||
assert sors[0]["visit_status"] == visit_status | |||||
@pytest.mark.django_db | @pytest.mark.django_db | ||||
@pytest.mark.parametrize( | @pytest.mark.parametrize( | ||||
"load_status,visit_status", | "load_status,visit_status", | ||||
[("eventful", "full"), ("eventful", "partial"), ("uneventful", "partial"),], | [("eventful", "full"), ("eventful", "partial"), ("uneventful", "partial"),], | ||||
) | ) | ||||
def test_get_visit_info_for_save_request_succeeded(mocker, load_status, visit_status): | def test_get_visit_info_for_save_request_succeeded(mocker, load_status, visit_status): | ||||
"""Nominal scenario, below 30 days, returns something""" | """Nominal scenario, below 30 days, returns something""" | ||||
sors = _get_save_origin_requests( | sors = _get_save_origin_requests( | ||||
mocker, load_status=load_status, visit_status=visit_status | mocker, load_status=load_status, visit_status=visit_status | ||||
) | ) | ||||
assert len(sors) == 1 | assert len(sors) == 1 | ||||
assert sors[0]["save_task_status"] == SAVE_TASK_SUCCEEDED | assert sors[0]["save_task_status"] == SAVE_TASK_SUCCEEDED | ||||
assert sors[0]["visit_date"] is not None | assert sors[0]["visit_date"] is not None | ||||
assert sors[0]["visit_status"] == visit_status | |||||
sors = get_save_origin_requests(_visit_type, _origin_url) | sors = get_save_origin_requests(_visit_type, _origin_url) | ||||
assert sors[0]["save_task_status"] == SAVE_TASK_SUCCEEDED | assert sors[0]["save_task_status"] == SAVE_TASK_SUCCEEDED | ||||
assert sors[0]["visit_status"] == visit_status | |||||
@pytest.mark.django_db | @pytest.mark.django_db | ||||
@pytest.mark.parametrize("load_status", ["eventful", "uneventful",]) | @pytest.mark.parametrize("load_status", ["eventful", "uneventful",]) | ||||
def test_get_visit_info_incomplete_visit_still_successful(mocker, load_status): | def test_get_visit_info_incomplete_visit_still_successful(mocker, load_status): | ||||
"""Incomplete visit information, yet the task is considered ok | """Incomplete visit information, yet the task is considered ok | ||||
""" | """ | ||||
sors = _get_save_origin_requests( | sors = _get_save_origin_requests( | ||||
mocker, load_status=load_status, visit_status=None, | mocker, load_status=load_status, visit_status=None, | ||||
) | ) | ||||
assert len(sors) == 1 | assert len(sors) == 1 | ||||
assert sors[0]["save_task_status"] == SAVE_TASK_SUCCEEDED | assert sors[0]["save_task_status"] == SAVE_TASK_SUCCEEDED | ||||
assert sors[0]["visit_date"] is None | assert sors[0]["visit_date"] is None | ||||
assert sors[0]["visit_status"] is None |