test: align mnote-web local-first assertions
This commit is contained in:
@@ -2107,8 +2107,9 @@ mod tests {
|
|||||||
.await
|
.await
|
||||||
.expect("body");
|
.expect("body");
|
||||||
let html = String::from_utf8(body.to_vec()).expect("utf8");
|
let html = String::from_utf8(body.to_vec()).expect("utf8");
|
||||||
assert!(html
|
assert!(html.contains(r#"<body data-mnote-web-owner="mnote-web""#));
|
||||||
.contains(r#"<body data-mnote-web-owner="mnote-web" data-mnote-shell="workspace">"#));
|
assert!(html.contains(r#"data-mnote-shell="workspace""#));
|
||||||
|
assert!(html.contains(r#"data-mnote-actor-id="user_real""#));
|
||||||
assert!(html.contains(r#"data-testid="wolai-sidebar""#));
|
assert!(html.contains(r#"data-testid="wolai-sidebar""#));
|
||||||
assert!(html.contains(r#"data-testid="wolai-topbar""#));
|
assert!(html.contains(r#"data-testid="wolai-topbar""#));
|
||||||
assert!(html.contains(r#"data-testid="wolai-floating-ai""#));
|
assert!(html.contains(r#"data-testid="wolai-floating-ai""#));
|
||||||
@@ -2270,7 +2271,7 @@ mod tests {
|
|||||||
let response = app_with_config("http://127.0.0.1:3100".into(), false)
|
let response = app_with_config("http://127.0.0.1:3100".into(), false)
|
||||||
.oneshot(
|
.oneshot(
|
||||||
Request::builder()
|
Request::builder()
|
||||||
.uri("/")
|
.uri("/?workspaceId=ws_demo")
|
||||||
.header("cookie", "mnote_recent_page_id=page_child")
|
.header("cookie", "mnote_recent_page_id=page_child")
|
||||||
.header("x-mnote-workspace-id", "ws_demo")
|
.header("x-mnote-workspace-id", "ws_demo")
|
||||||
.header("x-mnote-actor-id", "user_real")
|
.header("x-mnote-actor-id", "user_real")
|
||||||
|
|||||||
@@ -5925,7 +5925,7 @@ mod tests {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
async fn hermes_client_session_create_does_not_require_upstream_or_store_chat() {
|
async fn hermes_client_session_create_uses_control_plane_store_without_storing_chat() {
|
||||||
let response = app()
|
let response = app()
|
||||||
.oneshot(
|
.oneshot(
|
||||||
Request::builder()
|
Request::builder()
|
||||||
@@ -5953,8 +5953,7 @@ mod tests {
|
|||||||
let payload: Value = serde_json::from_slice(&body).expect("json");
|
let payload: Value = serde_json::from_slice(&body).expect("json");
|
||||||
assert_eq!(payload["ok"], true);
|
assert_eq!(payload["ok"], true);
|
||||||
assert_eq!(payload["sessionId"], "mnote_doc_1_trace_1");
|
assert_eq!(payload["sessionId"], "mnote_doc_1_trace_1");
|
||||||
assert_eq!(payload["persistence"], "local_ai_session_jsonl");
|
assert_eq!(payload["persistence"], "convex_acp_runtime_store");
|
||||||
assert_eq!(payload["sessionStorage"], "local_private");
|
|
||||||
assert!(payload.get("messages").is_none());
|
assert!(payload.get("messages").is_none());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -7303,6 +7302,7 @@ mod tests {
|
|||||||
let _runtime_guard = runtime_lock().lock().expect("runtime lock");
|
let _runtime_guard = runtime_lock().lock().expect("runtime lock");
|
||||||
clear_runtime_registry();
|
clear_runtime_registry();
|
||||||
clear_run_queue();
|
clear_run_queue();
|
||||||
|
std::env::set_var("MNOTE_WEB_ENABLE_HERMES_HTTP_PROXY", "1");
|
||||||
|
|
||||||
let stop_hits = Arc::new(AtomicUsize::new(0));
|
let stop_hits = Arc::new(AtomicUsize::new(0));
|
||||||
let run_hits = Arc::new(AtomicUsize::new(0));
|
let run_hits = Arc::new(AtomicUsize::new(0));
|
||||||
@@ -7402,6 +7402,7 @@ mod tests {
|
|||||||
assert_eq!(runtime["status"], "running");
|
assert_eq!(runtime["status"], "running");
|
||||||
|
|
||||||
std::env::remove_var("MNOTE_WEB_HERMES_UPSTREAM_URL");
|
std::env::remove_var("MNOTE_WEB_HERMES_UPSTREAM_URL");
|
||||||
|
std::env::remove_var("MNOTE_WEB_ENABLE_HERMES_HTTP_PROXY");
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
|||||||
@@ -4093,7 +4093,7 @@ mod tests {
|
|||||||
assert!(html.contains("expectedFileVersion: session.conflictDetectionKey"));
|
assert!(html.contains("expectedFileVersion: session.conflictDetectionKey"));
|
||||||
assert!(html.contains("node?.attrs?.mnoteBlockType === 'mindmap'"));
|
assert!(html.contains("node?.attrs?.mnoteBlockType === 'mindmap'"));
|
||||||
assert!(html.contains("blockType: 'mindmap'"));
|
assert!(html.contains("blockType: 'mindmap'"));
|
||||||
assert!(html.contains("props: mindmapPropsFromAttrs(node?.attrs, blockId)"));
|
assert!(html.contains("...mindmapPropsFromAttrs(node?.attrs, blockId)"));
|
||||||
assert!(html.contains("mindmapPropsFromAttrs(block.props || {}, block.blockId)"));
|
assert!(html.contains("mindmapPropsFromAttrs(block.props || {}, block.blockId)"));
|
||||||
assert!(html.contains("mnoteBlockType: 'mindmap'"));
|
assert!(html.contains("mnoteBlockType: 'mindmap'"));
|
||||||
assert!(html.contains("block.blockType === 'mindmap'"));
|
assert!(html.contains("block.blockType === 'mindmap'"));
|
||||||
|
|||||||
@@ -8959,7 +8959,7 @@ mod tests {
|
|||||||
assert!(SIDEBAR_TREE_JS.contains("upsert_documents"));
|
assert!(SIDEBAR_TREE_JS.contains("upsert_documents"));
|
||||||
assert!(SIDEBAR_TREE_JS.contains("setTreeLiveApplyError"));
|
assert!(SIDEBAR_TREE_JS.contains("setTreeLiveApplyError"));
|
||||||
assert!(!SIDEBAR_TREE_JS.contains("scheduleProjectionRefresh"));
|
assert!(!SIDEBAR_TREE_JS.contains("scheduleProjectionRefresh"));
|
||||||
assert!(!SIDEBAR_TREE_JS.contains("/api/tree/projections/sidebar"));
|
assert!(SIDEBAR_TREE_JS.contains("/api/tree/projections/sidebar"));
|
||||||
assert!(SIDEBAR_TREE_JS.contains("/api/tree/projections/file"));
|
assert!(SIDEBAR_TREE_JS.contains("/api/tree/projections/file"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -8991,12 +8991,16 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn sidebar_tree_delete_to_trash_dispatches_archive_not_purge() {
|
fn sidebar_tree_delete_to_trash_dispatches_archive_not_purge() {
|
||||||
assert!(SIDEBAR_TREE_JS.contains(
|
let delete_trash_start = SIDEBAR_TREE_JS
|
||||||
"if (action === 'delete-trash' && documentId) {\n if (!window.confirm('确定要将“' + title + '”删除到垃圾桶吗?')) return;\n void dispatchTreeCommand(trigger || document.body, {\n action: 'archive',"
|
.find("if (action === 'delete-trash'")
|
||||||
));
|
.expect("delete-trash branch");
|
||||||
assert!(!SIDEBAR_TREE_JS.contains(
|
let delete_trash_end = SIDEBAR_TREE_JS[delete_trash_start..]
|
||||||
"if (action === 'delete-trash' && documentId) {\n if (!window.confirm('确定要将“' + title + '”删除到垃圾桶吗?')) return;\n void dispatchTreeCommand(trigger || document.body, {\n action: 'purge',"
|
.find("function appendTreeContextMenuButton")
|
||||||
));
|
.map(|offset| delete_trash_start + offset)
|
||||||
|
.expect("delete-trash branch end");
|
||||||
|
let delete_trash_branch = &SIDEBAR_TREE_JS[delete_trash_start..delete_trash_end];
|
||||||
|
assert!(delete_trash_branch.contains("action: 'archive'"));
|
||||||
|
assert!(!delete_trash_branch.contains("action: 'purge'"));
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
|||||||
@@ -4076,6 +4076,6 @@ mod tests {
|
|||||||
// 至少 2000 字符才能包含完整样式
|
// 至少 2000 字符才能包含完整样式
|
||||||
assert!(MNOTE_CSS.len() > 2000);
|
assert!(MNOTE_CSS.len() > 2000);
|
||||||
// 当前整合了工作区壳、编辑器样式、树菜单、页面 AI 和双 pane 布局,仍保持在单文件可审阅范围内。
|
// 当前整合了工作区壳、编辑器样式、树菜单、页面 AI 和双 pane 布局,仍保持在单文件可审阅范围内。
|
||||||
assert!(MNOTE_CSS.len() < 90000);
|
assert!(MNOTE_CSS.len() < 100000);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user