feat(sources): removing a source deletes its files and index entries behind a confirmation modal
This commit is contained in:
@@ -60,10 +60,19 @@ def clean_git_sources(db: Session) -> Iterator[None]:
|
||||
db.commit()
|
||||
|
||||
|
||||
def _settings(git_sources: str = "") -> Settings:
|
||||
"""Fresh settings with the ``.env`` file ignored; the explicit kwarg
|
||||
beats any process env leaks (test_sync_api pattern)."""
|
||||
return Settings(_env_file=None, git_sources=git_sources) # pyright: ignore[reportCallIssue]
|
||||
def _settings(git_sources: str = "", **overrides: object) -> Settings:
|
||||
"""Fresh settings with the ``.env`` file ignored; the explicit
|
||||
kwargs beat any process env leaks (test_sync_api pattern).
|
||||
|
||||
``**overrides`` carries the per-test dir pins (``sources_dir`` /
|
||||
``upload_dir`` — the phase-69 total-removal DELETE must never aim a
|
||||
rmtree at the operator's real ``~/bor-sources``).
|
||||
"""
|
||||
return Settings(
|
||||
_env_file=None, # pyright: ignore[reportCallIssue]
|
||||
git_sources=git_sources,
|
||||
**overrides, # pyright: ignore[reportCallIssue]
|
||||
)
|
||||
|
||||
|
||||
# --- anonymous -------------------------------------------------------------
|
||||
@@ -493,12 +502,23 @@ def test_db_rows_win_over_env(admin_client: TestClient, db: Session, monkeypatch
|
||||
|
||||
|
||||
def test_delete_removes_row_and_falls_back_to_env(
|
||||
admin_client: TestClient, monkeypatch: pytest.MonkeyPatch
|
||||
admin_client: TestClient, db: Session, monkeypatch: pytest.MonkeyPatch, tmp_path: Path
|
||||
) -> None:
|
||||
# Phase 69: the DELETE is a total removal — the (absent) checkout
|
||||
# dir it would rmtree is pinned at fresh tmp dirs, so the test never
|
||||
# depends on the operator's real ``~/bor-sources`` being clean; the
|
||||
# document prune it performs owns the KB tables the same way the
|
||||
# other suites do (no row's source name may shadow real docs).
|
||||
db.execute(text("TRUNCATE chunks, documents"))
|
||||
db.commit()
|
||||
monkeypatch.setattr(
|
||||
git_sources_api,
|
||||
"get_settings",
|
||||
lambda: _settings("https://env.example.com/env.git"),
|
||||
lambda: _settings(
|
||||
"https://env.example.com/env.git",
|
||||
sources_dir=str(tmp_path / "sources"),
|
||||
upload_dir=str(tmp_path / "uploads"),
|
||||
),
|
||||
)
|
||||
created = admin_client.post("/api/git-sources", json={"url": "https://new.example.com/x.git"})
|
||||
assert created.status_code == 201
|
||||
@@ -518,6 +538,8 @@ def test_delete_removes_row_and_falls_back_to_env(
|
||||
"added_at": None,
|
||||
}
|
||||
]
|
||||
db.execute(text("TRUNCATE chunks, documents"))
|
||||
db.commit()
|
||||
|
||||
|
||||
def test_delete_unknown_id_returns_404(admin_client: TestClient) -> None:
|
||||
|
||||
Reference in New Issue
Block a user