mirror of
				https://github.com/AppFlowy-IO/AppFlowy.git
				synced 2025-10-30 17:38:40 +00:00 
			
		
		
		
	 5facb61e23
			
		
	
	
		5facb61e23
		
			
		
	
	
	
	
		
			
			* chore: rename flowy-folder2 to flowy-folder * chore: rename flowy-document2 to flowy-document * chore: fix test * chore: move lib-infra crate * chore: remove shared-lib * chore: fix clippy
		
			
				
	
	
		
			104 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			104 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
| use serde_json::json;
 | |
| 
 | |
| use flowy_document::parser::json::block::SerdeBlock;
 | |
| 
 | |
| #[test]
 | |
| fn test_empty_data_and_children() {
 | |
|   let json = json!({
 | |
|       "type": "page",
 | |
|   });
 | |
|   let block = serde_json::from_value::<SerdeBlock>(json).unwrap();
 | |
|   assert_eq!(block.ty, "page");
 | |
|   assert!(block.data.is_empty());
 | |
|   assert!(block.children.is_empty());
 | |
| }
 | |
| 
 | |
| #[test]
 | |
| fn test_data() {
 | |
|   let json = json!({
 | |
|     "type": "todo_list",
 | |
|     "data": {
 | |
|       "delta": [{ "insert": "Click anywhere and just start typing." }],
 | |
|       "checked": false
 | |
|     }
 | |
|   });
 | |
|   let block = serde_json::from_value::<SerdeBlock>(json).unwrap();
 | |
|   assert_eq!(block.ty, "todo_list");
 | |
|   assert_eq!(block.data.len(), 2);
 | |
|   assert_eq!(block.data.get("checked").unwrap(), false);
 | |
|   assert_eq!(
 | |
|     block.data.get("delta").unwrap().to_owned(),
 | |
|     json!([{ "insert": "Click anywhere and just start typing." }])
 | |
|   );
 | |
|   assert!(block.children.is_empty());
 | |
| }
 | |
| 
 | |
| #[test]
 | |
| fn test_children() {
 | |
|   let json = json!({
 | |
|     "type": "page",
 | |
|     "children": [
 | |
|       {
 | |
|         "type": "heading",
 | |
|         "data": {
 | |
|             "delta": [{ "insert": "Welcome to AppFlowy!" }],
 | |
|             "level": 1
 | |
|         }
 | |
|       },
 | |
|       {
 | |
|         "type": "todo_list",
 | |
|         "data": {
 | |
|             "delta": [{ "insert": "Welcome to AppFlowy!" }],
 | |
|             "checked": false
 | |
|         }
 | |
|       }
 | |
|   ]});
 | |
|   let block = serde_json::from_value::<SerdeBlock>(json).unwrap();
 | |
|   assert!(block.data.is_empty());
 | |
|   assert_eq!(block.ty, "page");
 | |
|   assert_eq!(block.children.len(), 2);
 | |
|   // heading
 | |
|   let heading = &block.children[0];
 | |
|   assert_eq!(heading.ty, "heading");
 | |
|   assert_eq!(heading.data.len(), 2);
 | |
| 
 | |
|   // todo_list
 | |
|   let todo_list = &block.children[1];
 | |
|   assert_eq!(todo_list.ty, "todo_list");
 | |
|   assert_eq!(todo_list.data.len(), 2);
 | |
| }
 | |
| 
 | |
| #[test]
 | |
| fn test_nested_children() {
 | |
|   let json = json!({
 | |
|     "type": "page",
 | |
|     "children": [
 | |
|       {
 | |
|         "type": "paragraph",
 | |
|         "children": [
 | |
|           {
 | |
|             "type": "paragraph",
 | |
|             "children": [
 | |
|               {
 | |
|                 "type": "paragraph",
 | |
|                 "children": [
 | |
|                   {
 | |
|                     "type": "paragraph"
 | |
|                   }
 | |
|                 ]
 | |
|               }
 | |
|             ]
 | |
|           }
 | |
|         ]
 | |
|       }
 | |
|     ]
 | |
|   });
 | |
|   let block = serde_json::from_value::<SerdeBlock>(json).unwrap();
 | |
|   assert!(block.data.is_empty());
 | |
|   assert_eq!(block.ty, "page");
 | |
|   assert_eq!(
 | |
|     block.children[0].children[0].children[0].children[0].ty,
 | |
|     "paragraph"
 | |
|   );
 | |
| }
 |