marketplace-intelligence / tests /test_nl_to_sql.py
soupstick's picture
rebuild: NL→SQL→Dashboard marketplace analytics + FastAPI + Docker + full test suite
0b005d6
Raw
History Blame Contribute Delete
864 Bytes
import json
import pytest
from app.nl_to_sql import convert_to_sql
with open("tests/fixtures/test_queries.json", encoding="utf-8") as fixture_file:
test_cases = json.load(fixture_file)["test_cases"]
@pytest.mark.parametrize("tc", test_cases)
def test_sql_generation(tc):
result = convert_to_sql(tc["question"])
sql = result["sql"].upper()
for expected_keyword in tc["expected_sql_contains"]:
assert expected_keyword.upper() in sql, (
f"[{tc['id']}] Expected '{expected_keyword}' in SQL for: {tc['question']}\nGot: {result['sql']}"
)
def test_returns_source():
result = convert_to_sql("top products by revenue")
assert result["source"] in ["llm", "rule_based"]
def test_handles_empty_question():
result = convert_to_sql("asdfghjkl random words with no meaning")
assert result["sql"] is not None