chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import cast
|
||||
|
||||
import pytest
|
||||
|
||||
from agents.items import TResponseInputItem
|
||||
from tests.utils.simple_session import CountingSession, IdStrippingSession, SimpleListSession
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_simple_list_session_preserves_history_and_saved_items() -> None:
|
||||
history: list[TResponseInputItem] = [
|
||||
cast(TResponseInputItem, {"id": "msg1", "content": "hi", "role": "user"}),
|
||||
cast(TResponseInputItem, {"id": "msg2", "content": "hello", "role": "assistant"}),
|
||||
]
|
||||
session = SimpleListSession(history=history)
|
||||
|
||||
items = await session.get_items()
|
||||
# get_items should return a copy, not the original list.
|
||||
assert items == history
|
||||
assert items is not history
|
||||
# saved_items should mirror the stored list.
|
||||
assert session.saved_items == history
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_counting_session_tracks_pop_calls() -> None:
|
||||
session = CountingSession(
|
||||
history=[cast(TResponseInputItem, {"id": "x", "content": "hi", "role": "user"})]
|
||||
)
|
||||
|
||||
assert session.pop_calls == 0
|
||||
await session.pop_item()
|
||||
assert session.pop_calls == 1
|
||||
await session.pop_item()
|
||||
assert session.pop_calls == 2
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_id_stripping_session_removes_ids_on_add() -> None:
|
||||
session = IdStrippingSession()
|
||||
items: list[TResponseInputItem] = [
|
||||
cast(TResponseInputItem, {"id": "keep-removed", "content": "hello", "role": "user"}),
|
||||
cast(TResponseInputItem, {"content": "no-id", "role": "assistant"}),
|
||||
]
|
||||
|
||||
await session.add_items(items)
|
||||
stored = await session.get_items()
|
||||
|
||||
assert all("id" not in item for item in stored if isinstance(item, dict))
|
||||
# pop_calls should increment when rewinding.
|
||||
await session.pop_item()
|
||||
assert session.pop_calls == 1
|
||||
Reference in New Issue
Block a user