AI_Menu_Search / tests /test_query_data.py
Juhaha
fix: return domestic and overseas account menus
ff3e892
Raw History Blame Contribute Delete
2.54 kB
import unittest
from core.query_data import (
normalize_query_text,
sanitize_description_queries,
sanitize_query_rows,
)
class QueryDataTests(unittest.TestCase):
def test_normalization(self):
self.assertEqual(normalize_query_text(" 잔고 조회? "), "잔고 조회")
def test_conflicting_queries_are_dropped(self):
rows = [
{"query": "잔고 조회", "menu_id": "SCR_1"},
{"query": "잔고 조회?", "menu_id": "SCR_2"},
{"query": "미체결 확인", "menu_id": "SCR_3"},
]
clean, stats = sanitize_query_rows(rows)
self.assertEqual(
clean,
[{"query": "미체결 확인", "menu_id": "SCR_3"}],
)
self.assertEqual(stats["conflicting"], 2)
def test_held_out_and_duplicates_are_dropped(self):
rows = [
{"query": "OTP 등록", "menu_id": "SCR_1"},
{"query": "OTP 등록", "menu_id": "SCR_1"},
{"query": "환전하기", "menu_id": "SCR_2"},
]
clean, stats = sanitize_query_rows(
rows,
excluded_queries={"환전하기"},
)
self.assertEqual(len(clean), 1)
self.assertEqual(stats["duplicate"], 1)
self.assertEqual(stats["held_out"], 1)
def test_explicitly_shared_queries_are_retained_for_multiple_menus(self):
rows = [
{
"query": "내 계좌 보여줘",
"menu_id": "SCR_1300",
"allow_shared_query": True,
},
{
"query": "내 계좌 보여줘",
"menu_id": "SCR_3075",
"allow_shared_query": True,
},
]
clean, stats = sanitize_query_rows(rows)
self.assertEqual(len(clean), 2)
self.assertEqual(stats["conflicting"], 0)
self.assertEqual(stats["shared_conflicting_texts"], 1)
def test_description_source_is_not_mutated(self):
source = [
{"menu_id": "SCR_1", "sample_queries": ["잔고 조회", "OTP 등록"]},
{"menu_id": "SCR_2", "sample_queries": ["잔고 조회"]},
]
clean, stats = sanitize_description_queries(source)
self.assertEqual(source[0]["sample_queries"], ["잔고 조회", "OTP 등록"])
self.assertEqual(clean[0]["sample_queries"], ["OTP 등록"])
self.assertEqual(clean[1]["sample_queries"], [])
self.assertEqual(stats["removed_conflicting"], 2)
if __name__ == "__main__":
unittest.main()