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>
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
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()
|
||||
Reference in New Issue
Block a user