{
"event": "PreToolUse",
"tool_name": "Write",
"tool_input": {
"file_path": "\/var\/www\/dev.campus.systemische-tools.de\/crawler\/tests\/integration\/infrastructure\/test_url_repository.py",
"content": "from __future__ import annotations\n\nfrom datetime import datetime, timedelta\n\nfrom src.domain.entities.url import Url\nfrom src.domain.value_objects.normalized_url import normalize\nfrom src.infrastructure.persistence.connection import MariaDbConnectionFactory\nfrom src.infrastructure.persistence.url_repository import UrlRepository\n\n\ndef _url(first_seen: datetime) -> Url:\n return Url(\n id=None,\n normalized=normalize(\"https:\/\/campus-am-see.de\/team\"),\n is_internal=True,\n first_seen_at=first_seen,\n last_seen_at=first_seen,\n )\n\n\ndef test_upsert_is_idempotent_and_updates_last_seen(\n connection_factory: MariaDbConnectionFactory,\n) -> None:\n repo = UrlRepository(connection_factory)\n t0 = datetime(2026, 4, 21, 12, 0, 0)\n first = repo.upsert(_url(t0))\n assert first.id is not None\n\n later = datetime(2026, 4, 21, 14, 0, 0)\n second_input = Url(\n id=None, normalized=first.normalized, is_internal=True,\n first_seen_at=t0, last_seen_at=later,\n )\n second = repo.upsert(second_input)\n assert second.id == first.id\n delta = second.last_seen_at - t0\n assert delta >= timedelta(hours=1, minutes=59)\n"
}
}
{
"tool_response": {
"type": "create",
"filePath": "\/var\/www\/dev.campus.systemische-tools.de\/crawler\/tests\/integration\/infrastructure\/test_url_repository.py",
"content": "from __future__ import annotations\n\nfrom datetime import datetime, timedelta\n\nfrom src.domain.entities.url import Url\nfrom src.domain.value_objects.normalized_url import normalize\nfrom src.infrastructure.persistence.connection import MariaDbConnectionFactory\nfrom src.infrastructure.persistence.url_repository import UrlRepository\n\n\ndef _url(first_seen: datetime) -> Url:\n return Url(\n id=None,\n normalized=normalize(\"https:\/\/campus-am-see.de\/team\"),\n is_internal=True,\n first_seen_at=first_seen,\n last_seen_at=first_seen,\n )\n\n\ndef test_upsert_is_idempotent_and_updates_last_seen(\n connection_factory: MariaDbConnectionFactory,\n) -> None:\n repo = UrlRepository(connection_factory)\n t0 = datetime(2026, 4, 21, 12, 0, 0)\n first = repo.upsert(_url(t0))\n assert first.id is not None\n\n later = datetime(2026, 4, 21, 14, 0, 0)\n second_input = Url(\n id=None, normalized=first.normalized, is_internal=True,\n first_seen_at=t0, last_seen_at=later,\n )\n second = repo.upsert(second_input)\n assert second.id == first.id\n delta = second.last_seen_at - t0\n assert delta >= timedelta(hours=1, minutes=59)\n",
"structuredPatch": [],
"originalFile": null,
"userModified": false
}
}