feat: add admin dashboard, pipeline service, lightbox, and update dependencies
This commit is contained in:
+8
-30
@@ -2,8 +2,12 @@
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import json
|
||||
from datetime import datetime, timezone
|
||||
from app.services.user_data import (
|
||||
get_note,
|
||||
save_note,
|
||||
set_reading_status,
|
||||
toggle_bookmark,
|
||||
)
|
||||
|
||||
|
||||
# ═══════════════════════════════════════════════════════════════════════
|
||||
@@ -13,22 +17,16 @@ from datetime import datetime, timezone
|
||||
|
||||
class TestBookmarkService:
|
||||
def test_toggle_bookmark_add(self, db_session, sample_paper):
|
||||
from app.services.user_data import toggle_bookmark
|
||||
|
||||
result = toggle_bookmark(db_session, "2401.12345")
|
||||
assert result["bookmarked"] is True
|
||||
assert result["arxiv_id"] == "2401.12345"
|
||||
|
||||
def test_toggle_bookmark_remove(self, db_session, sample_paper):
|
||||
from app.services.user_data import toggle_bookmark
|
||||
|
||||
toggle_bookmark(db_session, "2401.12345") # 添加
|
||||
result = toggle_bookmark(db_session, "2401.12345") # 移除
|
||||
toggle_bookmark(db_session, "2401.12345")
|
||||
result = toggle_bookmark(db_session, "2401.12345")
|
||||
assert result["bookmarked"] is False
|
||||
|
||||
def test_toggle_bookmark_not_found(self, db_session):
|
||||
from app.services.user_data import toggle_bookmark
|
||||
|
||||
result = toggle_bookmark(db_session, "nonexistent")
|
||||
assert "error" in result
|
||||
assert result["error"] == "not_found"
|
||||
@@ -41,36 +39,26 @@ class TestBookmarkService:
|
||||
|
||||
class TestReadingStatusService:
|
||||
def test_set_reading_status(self, db_session, sample_paper):
|
||||
from app.services.user_data import set_reading_status
|
||||
|
||||
result = set_reading_status(db_session, "2401.12345", "read_summary")
|
||||
assert result["status"] == "read_summary"
|
||||
assert result["arxiv_id"] == "2401.12345"
|
||||
|
||||
def test_set_reading_status_invalid(self, db_session, sample_paper):
|
||||
from app.services.user_data import set_reading_status
|
||||
|
||||
result = set_reading_status(db_session, "2401.12345", "invalid_status")
|
||||
assert "error" in result
|
||||
assert result["error"] == "invalid_status"
|
||||
|
||||
def test_update_existing_status(self, db_session, sample_paper):
|
||||
from app.services.user_data import set_reading_status
|
||||
|
||||
set_reading_status(db_session, "2401.12345", "skimmed")
|
||||
result = set_reading_status(db_session, "2401.12345", "read_full")
|
||||
assert result["status"] == "read_full"
|
||||
|
||||
def test_set_reading_status_not_found(self, db_session):
|
||||
from app.services.user_data import set_reading_status
|
||||
|
||||
result = set_reading_status(db_session, "nonexistent", "unread")
|
||||
assert "error" in result
|
||||
assert result["error"] == "not_found"
|
||||
|
||||
def test_all_valid_statuses(self, db_session, sample_paper):
|
||||
from app.services.user_data import set_reading_status
|
||||
|
||||
for status in ("unread", "skimmed", "read_summary", "read_full"):
|
||||
result = set_reading_status(db_session, "2401.12345", status)
|
||||
assert result["status"] == status
|
||||
@@ -83,8 +71,6 @@ class TestReadingStatusService:
|
||||
|
||||
class TestNoteService:
|
||||
def test_save_and_get_note(self, db_session, sample_paper):
|
||||
from app.services.user_data import get_note, save_note
|
||||
|
||||
save_note(db_session, "2401.12345", "这是一条测试笔记")
|
||||
result = get_note(db_session, "2401.12345")
|
||||
assert result["content"] == "这是一条测试笔记"
|
||||
@@ -92,29 +78,21 @@ class TestNoteService:
|
||||
assert result["updated_at"] is not None
|
||||
|
||||
def test_update_note(self, db_session, sample_paper):
|
||||
from app.services.user_data import get_note, save_note
|
||||
|
||||
save_note(db_session, "2401.12345", "旧笔记")
|
||||
save_note(db_session, "2401.12345", "新笔记")
|
||||
result = get_note(db_session, "2401.12345")
|
||||
assert result["content"] == "新笔记"
|
||||
|
||||
def test_get_note_empty(self, db_session, sample_paper):
|
||||
from app.services.user_data import get_note
|
||||
|
||||
result = get_note(db_session, "2401.12345")
|
||||
assert result["content"] == ""
|
||||
assert result["updated_at"] is None
|
||||
|
||||
def test_get_note_paper_not_found(self, db_session):
|
||||
from app.services.user_data import get_note
|
||||
|
||||
result = get_note(db_session, "nonexistent")
|
||||
assert result is None
|
||||
|
||||
def test_save_note_paper_not_found(self, db_session):
|
||||
from app.services.user_data import save_note
|
||||
|
||||
result = save_note(db_session, "nonexistent", "内容")
|
||||
assert "error" in result
|
||||
assert result["error"] == "not_found"
|
||||
|
||||
Reference in New Issue
Block a user