Files
wordloop/backend/tests/test_word_scan_service.py
john 05e173b293 Ship native iOS app, Wiki/TTS backend, and skeleton loading UX.
Replace the WebView shell with SwiftUI screens, add account-scoped Wiki and TTS APIs with adaptive review and photo scan support, and keep web/iOS pages usable while data loads asynchronously.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-08 15:13:59 +08:00

38 lines
1.4 KiB
Python

import os
import unittest
from unittest.mock import patch
from fastapi import HTTPException
from services.word_scan_service import word_scan_service
class WordScanServiceTest(unittest.TestCase):
def tearDown(self):
get_settings = __import__("config", fromlist=["get_settings"]).get_settings
get_settings.cache_clear()
def test_heuristic_parse_tab_separated_pairs(self):
with patch.dict(os.environ, {"DEEPSEEK_API_KEY": ""}, clear=False):
__import__("config", fromlist=["get_settings"]).get_settings.cache_clear()
items = word_scan_service.parse_scan_text("apple\t苹果\nbanana\t香蕉")
self.assertEqual(len(items), 2)
self.assertEqual(items[0]["source_text"], "apple")
self.assertEqual(items[0]["target_text"], "苹果")
def test_empty_text_raises(self):
with self.assertRaises(HTTPException) as ctx:
word_scan_service.parse_scan_text(" ")
self.assertEqual(ctx.exception.status_code, 400)
def test_unparseable_text_raises(self):
with patch.dict(os.environ, {"DEEPSEEK_API_KEY": ""}, clear=False):
__import__("config", fromlist=["get_settings"]).get_settings.cache_clear()
with self.assertRaises(HTTPException) as ctx:
word_scan_service.parse_scan_text("hello world only english")
self.assertEqual(ctx.exception.status_code, 422)
if __name__ == "__main__":
unittest.main()