mirror of
				https://github.com/excalidraw/excalidraw.git
				synced 2025-10-31 19:04:35 +01:00 
			
		
		
		
	 d6cd8b78f1
			
		
	
	d6cd8b78f1
	
	
	
		
			
			* feat: decouple package deps and introduce yarn workspaces * update root directory * fix * fix scripts * fix lint * update path in scripts * remove yarn.lock files from packages * ignore workspace * dummy * dummy * remove comment check * revert workflow changes * ignore ws when installing gh actions * remove log * update path * fix * fix typo
		
			
				
	
	
		
			68 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import { decodePngMetadata, decodeSvgMetadata } from "../excalidraw/data/image";
 | |
| import { ImportedDataState } from "../excalidraw/data/types";
 | |
| import * as utils from "../utils";
 | |
| import { API } from "../excalidraw/tests/helpers/api";
 | |
| 
 | |
| // NOTE this test file is using the actual API, unmocked. Hence splitting it
 | |
| // from the other test file, because I couldn't figure out how to test
 | |
| // mocked and unmocked API in the same file.
 | |
| 
 | |
| describe("embedding scene data", () => {
 | |
|   describe("exportToSvg", () => {
 | |
|     it("embedding scene data shouldn't modify them", async () => {
 | |
|       const rectangle = API.createElement({ type: "rectangle" });
 | |
|       const ellipse = API.createElement({ type: "ellipse" });
 | |
| 
 | |
|       const sourceElements = [rectangle, ellipse];
 | |
| 
 | |
|       const svgNode = await utils.exportToSvg({
 | |
|         elements: sourceElements,
 | |
|         appState: {
 | |
|           viewBackgroundColor: "#ffffff",
 | |
|           gridSize: null,
 | |
|           exportEmbedScene: true,
 | |
|         },
 | |
|         files: null,
 | |
|       });
 | |
| 
 | |
|       const svg = svgNode.outerHTML;
 | |
| 
 | |
|       const parsedString = await decodeSvgMetadata({ svg });
 | |
|       const importedData: ImportedDataState = JSON.parse(parsedString);
 | |
| 
 | |
|       expect(sourceElements.map((x) => x.id)).toEqual(
 | |
|         importedData.elements?.map((el) => el.id),
 | |
|       );
 | |
|     });
 | |
|   });
 | |
| 
 | |
|   // skipped because we can't test png encoding right now
 | |
|   // (canvas.toBlob not supported in jsdom)
 | |
|   describe.skip("exportToBlob", () => {
 | |
|     it("embedding scene data shouldn't modify them", async () => {
 | |
|       const rectangle = API.createElement({ type: "rectangle" });
 | |
|       const ellipse = API.createElement({ type: "ellipse" });
 | |
| 
 | |
|       const sourceElements = [rectangle, ellipse];
 | |
| 
 | |
|       const blob = await utils.exportToBlob({
 | |
|         mimeType: "image/png",
 | |
|         elements: sourceElements,
 | |
|         appState: {
 | |
|           viewBackgroundColor: "#ffffff",
 | |
|           gridSize: null,
 | |
|           exportEmbedScene: true,
 | |
|         },
 | |
|         files: null,
 | |
|       });
 | |
| 
 | |
|       const parsedString = await decodePngMetadata(blob);
 | |
|       const importedData: ImportedDataState = JSON.parse(parsedString);
 | |
| 
 | |
|       expect(sourceElements.map((x) => x.id)).toEqual(
 | |
|         importedData.elements?.map((el) => el.id),
 | |
|       );
 | |
|     });
 | |
|   });
 | |
| });
 |