async def METHOD_NAME(
    client_with_task_context: TestClient,
    start_long_running_task: Callable[[TestClient], Awaitable[TaskId]],
    task_context: TaskContext,
):
    assert client_with_task_context.app
    task_id = await start_long_running_task(client_with_task_context)
    cancel_url = client_with_task_context.app.router["cancel_and_delete_task"].url_for(
        task_id=task_id
    )
    # calling cancel without task context should find nothing
    resp = await client_with_task_context.delete(f"{cancel_url}")
    await assert_status(resp, web.HTTPNotFound)
    # calling with context should find and delete the task
    resp = await client_with_task_context.delete(
        f"{cancel_url.update_query(task_context)}"
    )
    await assert_status(resp, web.HTTPNoContent)
    # calling with context a second time should find nothing
    resp = await client_with_task_context.delete(
        f"{cancel_url.update_query(task_context)}"
    )
    await assert_status(resp, web.HTTPNotFound)