Add cleanup tests
This commit is contained in:
		
							parent
							
								
									2be9d274f2
								
							
						
					
					
						commit
						a0e3f70dbb
					
				
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							|  | @ -11,3 +11,4 @@ yarn-error.log | |||
| .vscode | ||||
| todo.txt | ||||
| result | ||||
| shell.nix | ||||
|  |  | |||
|  | @ -44,6 +44,7 @@ | |||
|     "@types/node": "^18.8.0", | ||||
|     "@types/react": "^18.0.21", | ||||
|     "@types/styled-components": "^5.1.26", | ||||
|     "@types/uuid": "^8.3.4", | ||||
|     "@types/webpack": "^5.28.0", | ||||
|     "canvas": "^2.10.1", | ||||
|     "cross-env": "^7.0.3", | ||||
|  | @ -84,7 +85,8 @@ | |||
|     "format": "prettier --write .", | ||||
|     "prepack": "yarn run build:cjs && yarn run bundle", | ||||
|     "test": "jest", | ||||
|     "test:debug": "node --inspect-brk node_modules/.bin/jest --runInBand" | ||||
|     "test:debug": "node --inspect-brk node_modules/.bin/jest --runInBand", | ||||
|     "test:profile": "node --cpu-prof node_modules/.bin/jest --runInBand" | ||||
|   }, | ||||
|   "eslintConfig": { | ||||
|     "extends": [ | ||||
|  |  | |||
|  | @ -1,7 +1,7 @@ | |||
| import { environment, SqProject, SqValue } from "@quri/squiggle-lang"; | ||||
| import { useEffect, useMemo } from "react"; | ||||
| import { JsImports, jsImportsToSquiggleCode } from "../jsImports"; | ||||
| import { v4 as uuidv4 } from "uuid"; | ||||
| import * as uuid from 'uuid'; | ||||
| 
 | ||||
| type SquiggleArgs = { | ||||
|   code?: string; | ||||
|  | @ -17,7 +17,7 @@ type SquiggleArgs = { | |||
| const importSourceName = (sourceName: string) => "imports-" + sourceName; | ||||
| 
 | ||||
| export const useSquiggle = (args: SquiggleArgs) => { | ||||
|   const autogenName = useMemo(() => uuidv4(), []); | ||||
|   const autogenName = useMemo(() => uuid.v4(), []); | ||||
| 
 | ||||
|   const result = useMemo( | ||||
|     () => { | ||||
|  | @ -70,9 +70,9 @@ export const useSquiggle = (args: SquiggleArgs) => { | |||
|   useEffect( | ||||
|     () => { | ||||
|       return () => { | ||||
|         if (result.needsClean) args.project.clean(result.sourceName); | ||||
|         if (result.needsClean) args.project.removeSource(result.sourceName); | ||||
|         if (args.project.getSource(importSourceName(result.sourceName))) | ||||
|           args.project.clean(result.sourceName); | ||||
|           args.project.removeSource(result.sourceName); | ||||
|       }; | ||||
|     }, | ||||
|     // eslint-disable-next-line react-hooks/exhaustive-deps
 | ||||
|  |  | |||
|  | @ -3,11 +3,11 @@ import React from "react"; | |||
| import "@testing-library/jest-dom"; | ||||
| import { SquiggleChart } from "../src/index"; | ||||
| 
 | ||||
| test("Logs no warnings or errors", async () => { | ||||
|   debugger; | ||||
| test("Logs nothing on render", async () => { | ||||
|   const { unmount } = render(<SquiggleChart code={"normal(0, 1)"} />); | ||||
|   unmount(); | ||||
| 
 | ||||
|   expect(console.log).not.toBeCalled(); | ||||
|   expect(console.warn).not.toBeCalled(); | ||||
|   expect(console.error).not.toBeCalled(); | ||||
| }); | ||||
|  |  | |||
							
								
								
									
										19
									
								
								packages/components/test/cleanup.test.tsx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								packages/components/test/cleanup.test.tsx
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,19 @@ | |||
| import { render } from "@testing-library/react"; | ||||
| import React from "react"; | ||||
| import "@testing-library/jest-dom"; | ||||
| import { SquiggleChart } from "../src/index"; | ||||
| import { SqProject } from "@quri/squiggle-lang"; | ||||
| 
 | ||||
| test("Creates and cleans up source", async () => { | ||||
|   const project = SqProject.create(); | ||||
| 
 | ||||
|   const { unmount } = render(<SquiggleChart code={"normal(0, 1)"} project={project} />); | ||||
|   expect(project.getSourceIds().length).toBe(1) | ||||
| 
 | ||||
|   const sourceId = project.getSourceIds()[0] | ||||
|   expect(project.getSource(sourceId)).toBe("normal(0, 1)") | ||||
| 
 | ||||
|   unmount(); | ||||
|   expect(project.getSourceIds().length).toBe(0) | ||||
|   expect(project.getSource(sourceId)).toBe(undefined) | ||||
| }); | ||||
							
								
								
									
										10
									
								
								yarn.lock
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								yarn.lock
									
									
									
									
									
								
							|  | @ -5078,10 +5078,10 @@ | |||
|     "@types/history" "^4.7.11" | ||||
|     "@types/react" "*" | ||||
| 
 | ||||
| "@types/react@*", "@types/react@^18.0.1", "@types/react@^18.0.21": | ||||
|   version "18.0.21" | ||||
|   resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.21.tgz#b8209e9626bb00a34c76f55482697edd2b43cc67" | ||||
|   integrity sha512-7QUCOxvFgnD5Jk8ZKlUAhVcRj7GuJRjnjjiY/IUBWKgOlnvDvTMLD4RTF7NPyVmbRhNrbomZiOepg7M/2Kj1mA== | ||||
| "@types/react@*", "@types/react@17.0.43", "@types/react@^18.0.21": | ||||
|   version "17.0.43" | ||||
|   resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.43.tgz#4adc142887dd4a2601ce730bc56c3436fdb07a55" | ||||
|   integrity sha512-8Q+LNpdxf057brvPu1lMtC5Vn7J119xrP1aq4qiaefNioQUYANF/CYeK4NsKorSZyUGJ66g0IM+4bbjwx45o2A== | ||||
|   dependencies: | ||||
|     "@types/prop-types" "*" | ||||
|     "@types/scheduler" "*" | ||||
|  | @ -15979,7 +15979,7 @@ react-vega@^7.6.0: | |||
|     prop-types "^15.8.1" | ||||
|     vega-embed "^6.5.1" | ||||
| 
 | ||||
| react@^18.0.0, react@^18.1.0: | ||||
| react@^18.1.0: | ||||
|   version "18.2.0" | ||||
|   resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" | ||||
|   integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	Block a user