Files
mnote/rust/crates/mnote-editor-core/tests/pipeline.rs
T

64 lines
2.0 KiB
Rust

use mnote_editor_core::{
apply_ai_pipeline, EditorAiScenario, EditorInputKind, EditorPipelineRequest,
};
#[test]
fn ai_pipeline_turns_meeting_notes_into_todos() {
let result = apply_ai_pipeline(EditorPipelineRequest {
kind: EditorInputKind::PlainText,
scenario: EditorAiScenario::MeetingNotesToTodos,
input: "待办:整理会议纪要\n普通段落".into(),
})
.expect("pipeline should succeed");
assert_eq!(
result.document.blocks()[0].block_type.as_editor_label(),
"todo"
);
assert_eq!(result.audit.len(), 1);
assert!(result
.change_report
.updated_blocks
.contains(&"imported_1".to_string()));
assert!(result.markdown.contains("待办:整理会议纪要"));
}
#[test]
fn ai_pipeline_refines_long_paragraph_to_title() {
let result = apply_ai_pipeline(EditorPipelineRequest {
kind: EditorInputKind::PlainText,
scenario: EditorAiScenario::LongParagraphToTitle,
input: "这是一个很长的段落 用于提炼 标题".into(),
})
.expect("pipeline should succeed");
assert_eq!(
result.document.blocks()[0].block_type.as_editor_label(),
"heading"
);
assert_eq!(result.document.blocks()[0].heading_level, Some(1));
assert_eq!(result.audit.len(), 1);
assert!(result
.change_report
.updated_blocks
.contains(&"imported_1".to_string()));
}
#[test]
fn ai_pipeline_reorders_first_block_after_second() {
let result = apply_ai_pipeline(EditorPipelineRequest {
kind: EditorInputKind::PlainText,
scenario: EditorAiScenario::PageReorder,
input: "第一页\n\n第二页".into(),
})
.expect("pipeline should succeed");
assert_eq!(result.document.blocks()[0].content.text, "第二页");
assert_eq!(result.document.blocks()[1].content.text, "第一页");
assert_eq!(result.audit.len(), 1);
assert_eq!(
result.change_report.moved_blocks,
vec!["imported_1".to_string()]
);
}