Update knowledge base layout

This commit is contained in:
Xin Wang
2026-02-09 07:27:54 +08:00
parent e643c7db17
commit 7206c313d2
2 changed files with 76 additions and 6 deletions

View File

@@ -1,6 +1,7 @@
"""Tests for Knowledge Base API endpoints"""
import pytest
import uuid
from app.models import KnowledgeBase
class TestKnowledgeAPI:
@@ -224,8 +225,8 @@ class TestKnowledgeAPI:
{"chunkSize": 1000, "chunkOverlap": 100},
{"chunkSize": 256, "chunkOverlap": 25}
]
for config in configs:
data = {"name": "Chunk Test KB", **config}
for idx, config in enumerate(configs):
data = {"name": f"Chunk Test KB {idx}", **config}
response = client.post("/api/knowledge/bases", json=data)
assert response.status_code == 200
@@ -253,3 +254,25 @@ class TestKnowledgeAPI:
assert response.status_code == 200
data = response.json()
assert len(data["documents"]) == 3
def test_create_knowledge_base_duplicate_name(self, client):
"""Test duplicate KB names are rejected for same user."""
payload = {"name": "Duplicate KB"}
first = client.post("/api/knowledge/bases", json=payload)
assert first.status_code == 200
second = client.post("/api/knowledge/bases", json=payload)
assert second.status_code == 400
def test_update_embedding_model_blocked_when_chunks_exist(self, client, db_session):
"""Test embedding model change is blocked after indexing chunks."""
create_resp = client.post("/api/knowledge/bases", json={"name": "KB Embedding Lock"})
assert create_resp.status_code == 200
kb_id = create_resp.json()["id"]
kb = db_session.query(KnowledgeBase).filter(KnowledgeBase.id == kb_id).first()
kb.chunk_count = 5
db_session.commit()
update_resp = client.put(f"/api/knowledge/bases/{kb_id}", json={"embeddingModel": "text-embedding-3-large"})
assert update_resp.status_code == 400