import pytest

from .. import (
    assert_fetch_error_event,
    PAGE_EMPTY_TEXT,
    FETCH_ERROR_EVENT,
)

pytestmark = pytest.mark.asyncio


@pytest.mark.parametrize("phase", ["beforeRequestSent", "responseStarted"])
async def test_phases(
    setup_blocked_request, subscribe_events, wait_for_event, bidi_session, url, phase
):
    request = await setup_blocked_request(phase)
    await subscribe_events(events=[FETCH_ERROR_EVENT])

    on_fetch_error = wait_for_event(FETCH_ERROR_EVENT)
    await bidi_session.network.fail_request(request=request)
    await on_fetch_error

    fetch_error_event = await on_fetch_error
    expected_request = {"method": "GET", "url": url(PAGE_EMPTY_TEXT)}

    assert_fetch_error_event(
        fetch_error_event,
        expected_event={"request": expected_request, "redirectCount": 0},
    )
