{
"event": "PreToolUse",
"tool_name": "Edit",
"tool_input": {
"file_path": "\/var\/www\/dev.campus.systemische-tools.de\/crawler\/tests\/integration\/conftest.py",
"old_string": "@pytest.fixture\ndef connection_factory() -> MariaDbConnectionFactory:\n return MariaDbConnectionFactory(load_db_settings(\"crawler\"))\n\n\n@pytest.fixture(autouse=True)\ndef _clean_crawler_db(\n connection_factory: MariaDbConnectionFactory,\n) -> Generator[None, None, None]:\n _truncate(connection_factory)\n yield\n _truncate(connection_factory)\n\n\ndef _truncate(factory: MariaDbConnectionFactory) -> None:\n with factory.session() as conn:\n cur = conn.cursor()\n cur.execute(\"SET FOREIGN_KEY_CHECKS=0\")\n for table in _TRUNCATE_ORDER:\n cur.execute(f\"TRUNCATE TABLE {table}\")\n cur.execute(\"SET FOREIGN_KEY_CHECKS=1\")",
"new_string": "@pytest.fixture\ndef connection_factory() -> MariaDbConnectionFactory:\n return MariaDbConnectionFactory(load_db_settings(TEST_DB))\n\n\n@pytest.fixture(autouse=True)\ndef _clean_crawler_db(\n connection_factory: MariaDbConnectionFactory,\n) -> Generator[None, None, None]:\n _guard_test_db(connection_factory)\n _truncate(connection_factory)\n yield\n _truncate(connection_factory)\n\n\ndef _guard_test_db(factory: MariaDbConnectionFactory) -> None:\n with factory.session() as conn:\n cur = conn.cursor()\n cur.execute(\"SELECT DATABASE()\")\n row = cur.fetchone()\n current = row[0] if row else None\n if current != TEST_DB:\n raise RuntimeError(\n f\"refusing to truncate database {current!r}; expected {TEST_DB!r}\",\n )\n\n\ndef _truncate(factory: MariaDbConnectionFactory) -> None:\n with factory.session() as conn:\n cur = conn.cursor()\n cur.execute(\"SET FOREIGN_KEY_CHECKS=0\")\n for table in _TRUNCATE_ORDER:\n cur.execute(f\"TRUNCATE TABLE {table}\")\n cur.execute(\"SET FOREIGN_KEY_CHECKS=1\")",
"replace_all": false
}
}
{
"tool_response": {
"filePath": "\/var\/www\/dev.campus.systemische-tools.de\/crawler\/tests\/integration\/conftest.py",
"oldString": "@pytest.fixture\ndef connection_factory() -> MariaDbConnectionFactory:\n return MariaDbConnectionFactory(load_db_settings(\"crawler\"))\n\n\n@pytest.fixture(autouse=True)\ndef _clean_crawler_db(\n connection_factory: MariaDbConnectionFactory,\n) -> Generator[None, None, None]:\n _truncate(connection_factory)\n yield\n _truncate(connection_factory)\n\n\ndef _truncate(factory: MariaDbConnectionFactory) -> None:\n with factory.session() as conn:\n cur = conn.cursor()\n cur.execute(\"SET FOREIGN_KEY_CHECKS=0\")\n for table in _TRUNCATE_ORDER:\n cur.execute(f\"TRUNCATE TABLE {table}\")\n cur.execute(\"SET FOREIGN_KEY_CHECKS=1\")",
"newString": "@pytest.fixture\ndef connection_factory() -> MariaDbConnectionFactory:\n return MariaDbConnectionFactory(load_db_settings(TEST_DB))\n\n\n@pytest.fixture(autouse=True)\ndef _clean_crawler_db(\n connection_factory: MariaDbConnectionFactory,\n) -> Generator[None, None, None]:\n _guard_test_db(connection_factory)\n _truncate(connection_factory)\n yield\n _truncate(connection_factory)\n\n\ndef _guard_test_db(factory: MariaDbConnectionFactory) -> None:\n with factory.session() as conn:\n cur = conn.cursor()\n cur.execute(\"SELECT DATABASE()\")\n row = cur.fetchone()\n current = row[0] if row else None\n if current != TEST_DB:\n raise RuntimeError(\n f\"refusing to truncate database {current!r}; expected {TEST_DB!r}\",\n )\n\n\ndef _truncate(factory: MariaDbConnectionFactory) -> None:\n with factory.session() as conn:\n cur = conn.cursor()\n cur.execute(\"SET FOREIGN_KEY_CHECKS=0\")\n for table in _TRUNCATE_ORDER:\n cur.execute(f\"TRUNCATE TABLE {table}\")\n cur.execute(\"SET FOREIGN_KEY_CHECKS=1\")",
"originalFile": "from __future__ import annotations\n\nfrom collections.abc import Generator\n\nimport pytest\n\nfrom src.infrastructure.config.db_config import load_db_settings\nfrom src.infrastructure.persistence.connection import MariaDbConnectionFactory\n\nTEST_DB = \"crawler_test\"\n\n_TRUNCATE_ORDER = (\n \"url_queue\",\n \"external_checks\",\n \"errors\",\n \"js_errors\",\n \"hreflang\",\n \"structured_data\",\n \"resources\",\n \"images\",\n \"links\",\n \"page_headers\",\n \"pages\",\n \"urls\",\n \"crawls\",\n)\n\n\n@pytest.fixture\ndef connection_factory() -> MariaDbConnectionFactory:\n return MariaDbConnectionFactory(load_db_settings(\"crawler\"))\n\n\n@pytest.fixture(autouse=True)\ndef _clean_crawler_db(\n connection_factory: MariaDbConnectionFactory,\n) -> Generator[None, None, None]:\n _truncate(connection_factory)\n yield\n _truncate(connection_factory)\n\n\ndef _truncate(factory: MariaDbConnectionFactory) -> None:\n with factory.session() as conn:\n cur = conn.cursor()\n cur.execute(\"SET FOREIGN_KEY_CHECKS=0\")\n for table in _TRUNCATE_ORDER:\n cur.execute(f\"TRUNCATE TABLE {table}\")\n cur.execute(\"SET FOREIGN_KEY_CHECKS=1\")\n",
"structuredPatch": [
{
"oldStart": 28,
"oldLines": 18,
"newStart": 28,
"newLines": 31,
"lines": [
" ",
" @pytest.fixture",
" def connection_factory() -> MariaDbConnectionFactory:",
"- return MariaDbConnectionFactory(load_db_settings(\"crawler\"))",
"+ return MariaDbConnectionFactory(load_db_settings(TEST_DB))",
" ",
" ",
" @pytest.fixture(autouse=True)",
" def _clean_crawler_db(",
" connection_factory: MariaDbConnectionFactory,",
" ) -> Generator[None, None, None]:",
"+ _guard_test_db(connection_factory)",
" _truncate(connection_factory)",
" yield",
" _truncate(connection_factory)",
" ",
" ",
"+def _guard_test_db(factory: MariaDbConnectionFactory) -> None:",
"+ with factory.session() as conn:",
"+ cur = conn.cursor()",
"+ cur.execute(\"SELECT DATABASE()\")",
"+ row = cur.fetchone()",
"+ current = row[0] if row else None",
"+ if current != TEST_DB:",
"+ raise RuntimeError(",
"+ f\"refusing to truncate database {current!r}; expected {TEST_DB!r}\",",
"+ )",
"+",
"+",
" def _truncate(factory: MariaDbConnectionFactory) -> None:",
" with factory.session() as conn:",
" cur = conn.cursor()"
]
}
],
"userModified": false,
"replaceAll": false
}
}