From d2ca58e3a3154192a70dc7763bb361423a42e20f Mon Sep 17 00:00:00 2001 From: Nick Santos Date: Wed, 3 Aug 2022 17:06:36 -0400 Subject: [PATCH 1/5] index: export a function to re-initialize mocks Signed-off-by: Nick Santos --- .gitignore | 3 +++ __tests__/index.js | 13 ++++++++++++- src/index.js | 3 +++ types/index.d.ts | 2 ++ 4 files changed, 20 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index bc7a6d1..cbb0c3b 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,6 @@ coverage package-lock.json yarn.lock lib +.yarn +.pnp.cjs +.pnp.loader.mjs diff --git a/__tests__/index.js b/__tests__/index.js index dd9354f..c055ef8 100644 --- a/__tests__/index.js +++ b/__tests__/index.js @@ -2,7 +2,7 @@ * test canvas */ -import { ver } from '../src'; +import { ver, setupCanvasMock } from '../src'; import pkg from '../package.json'; let canvas; @@ -16,3 +16,14 @@ describe('canvas', () => { expect(ver).toBe(pkg.version); }); }); + +describe('setupCanvasMock', () => { + it('should setup after resetAllMocks', () => { + jest.resetAllMocks(); + expect(document.createElement('canvas').getContext('2d')).toBe(undefined); + setupCanvasMock(); + expect(document.createElement('canvas').getContext('2d')).toHaveProperty( + 'createImageData' + ); + }); +}); diff --git a/src/index.js b/src/index.js index f6e4994..0071f9b 100644 --- a/src/index.js +++ b/src/index.js @@ -12,3 +12,6 @@ if (typeof window !== 'undefined') { } export const ver = '__VERSION__'; +export function setupCanvasMock() { + mockWindow(global.window); +} diff --git a/types/index.d.ts b/types/index.d.ts index 9882705..a32ba67 100644 --- a/types/index.d.ts +++ b/types/index.d.ts @@ -1,3 +1,5 @@ +export function setupCanvasMock() {} + export interface CanvasRenderingContext2DEvent { /** * This is the type of canvas event that occured. From 17d699b85aee495daa6ec37701be88c2c60b07a7 Mon Sep 17 00:00:00 2001 From: Nick Santos Date: Sun, 21 Aug 2022 20:15:09 -0400 Subject: [PATCH 2/5] Update src/index.js Co-authored-by: Jon Dufresne --- src/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/index.js b/src/index.js index 0071f9b..000c597 100644 --- a/src/index.js +++ b/src/index.js @@ -12,6 +12,6 @@ if (typeof window !== 'undefined') { } export const ver = '__VERSION__'; -export function setupCanvasMock() { - mockWindow(global.window); +export function setupCanvasMock(window) { + mockWindow(window || global.window); } From 61431d0ed2df14e8bc16e20966916ff28164108e Mon Sep 17 00:00:00 2001 From: Nick Santos Date: Tue, 23 Aug 2022 14:36:06 -0400 Subject: [PATCH 3/5] update type declaration Signed-off-by: Nick Santos --- types/index.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/types/index.d.ts b/types/index.d.ts index a32ba67..379bbde 100644 --- a/types/index.d.ts +++ b/types/index.d.ts @@ -1,4 +1,4 @@ -export function setupCanvasMock() {} +export function setupCanvasMock(window?: Window) {} export interface CanvasRenderingContext2DEvent { /** From d9b95c744064fcd04840c12a4fcbf7ec2df8a2ca Mon Sep 17 00:00:00 2001 From: Nick Santos Date: Fri, 21 Oct 2022 16:34:35 -0400 Subject: [PATCH 4/5] response to comments Signed-off-by: Nick Santos --- __tests__/index.js | 4 ++-- src/index.js | 3 ++- types/index.d.ts | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/__tests__/index.js b/__tests__/index.js index c055ef8..aecc257 100644 --- a/__tests__/index.js +++ b/__tests__/index.js @@ -2,7 +2,7 @@ * test canvas */ -import { ver, setupCanvasMock } from '../src'; +import { ver, setJestCanvasMock } from '../src'; import pkg from '../package.json'; let canvas; @@ -21,7 +21,7 @@ describe('setupCanvasMock', () => { it('should setup after resetAllMocks', () => { jest.resetAllMocks(); expect(document.createElement('canvas').getContext('2d')).toBe(undefined); - setupCanvasMock(); + setJestCanvasMock(); expect(document.createElement('canvas').getContext('2d')).toHaveProperty( 'createImageData' ); diff --git a/src/index.js b/src/index.js index 000c597..c497041 100644 --- a/src/index.js +++ b/src/index.js @@ -12,6 +12,7 @@ if (typeof window !== 'undefined') { } export const ver = '__VERSION__'; -export function setupCanvasMock(window) { + +export function setJestCanvasMock(window) { mockWindow(window || global.window); } diff --git a/types/index.d.ts b/types/index.d.ts index 379bbde..54901fd 100644 --- a/types/index.d.ts +++ b/types/index.d.ts @@ -1,4 +1,4 @@ -export function setupCanvasMock(window?: Window) {} +export function setJestCanvasMock(window?: Window) {} export interface CanvasRenderingContext2DEvent { /** From eeb74f7453e040e08d21ece6aafc6c680e4cad2e Mon Sep 17 00:00:00 2001 From: Nick Santos Date: Sat, 29 Oct 2022 10:34:32 -0400 Subject: [PATCH 5/5] response to comments Signed-off-by: Nick Santos --- README.md | 14 ++++++++++++++ __tests__/index.js | 6 +++--- src/index.js | 2 +- types/index.d.ts | 2 +- 4 files changed, 19 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 0aaf571..1f935c5 100644 --- a/README.md +++ b/README.md @@ -63,6 +63,20 @@ Add that file to your `setupFiles` array: } ``` +## Reset + +If you reset the jest mocks (for example, with `jest.resetAllMocks()`), you can +call `setupJestCanvasMock()` to re-create it. + +``` +import { setupJestCanvasMock } from 'jest-canvas-mock'; + +beforeEach(() => { + jest.resetAllMocks(); + setupJestCanvasMock(); +}); +``` + ## Mock Strategy This mock strategy implements all the canvas functions and actually verifies the parameters. If a diff --git a/__tests__/index.js b/__tests__/index.js index aecc257..300c85d 100644 --- a/__tests__/index.js +++ b/__tests__/index.js @@ -2,7 +2,7 @@ * test canvas */ -import { ver, setJestCanvasMock } from '../src'; +import { ver, setupJestCanvasMock } from '../src'; import pkg from '../package.json'; let canvas; @@ -17,11 +17,11 @@ describe('canvas', () => { }); }); -describe('setupCanvasMock', () => { +describe('setupJestCanvasMock', () => { it('should setup after resetAllMocks', () => { jest.resetAllMocks(); expect(document.createElement('canvas').getContext('2d')).toBe(undefined); - setJestCanvasMock(); + setupJestCanvasMock(); expect(document.createElement('canvas').getContext('2d')).toHaveProperty( 'createImageData' ); diff --git a/src/index.js b/src/index.js index c497041..aa1ec9a 100644 --- a/src/index.js +++ b/src/index.js @@ -13,6 +13,6 @@ if (typeof window !== 'undefined') { export const ver = '__VERSION__'; -export function setJestCanvasMock(window) { +export function setupJestCanvasMock(window) { mockWindow(window || global.window); } diff --git a/types/index.d.ts b/types/index.d.ts index 54901fd..39a3edc 100644 --- a/types/index.d.ts +++ b/types/index.d.ts @@ -1,4 +1,4 @@ -export function setJestCanvasMock(window?: Window) {} +export function setupJestCanvasMock(window?: Window) {} export interface CanvasRenderingContext2DEvent { /**