@vnejs/test-utils 0.1.1 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,2 @@
1
+ import type { EventSpy } from "./spy-event.js";
2
+ export declare const expectCallSequence: (spy: EventSpy, ...calls: unknown[]) => void;
@@ -0,0 +1,7 @@
1
+ import { expect } from "vitest";
2
+ export const expectCallSequence = (spy, ...calls) => {
3
+ expect(spy).toHaveBeenCalledTimes(calls.length);
4
+ calls.forEach((expected, index) => {
5
+ expect(spy.mock.calls[index]?.[0]).toMatchObject(expected);
6
+ });
7
+ };
package/dist/index.d.ts CHANGED
@@ -3,7 +3,8 @@ export { createTestModule, type CreateTestModuleOptions, type TestModuleInstance
3
3
  export { registerCoreVne } from "./register-core-vne.js";
4
4
  export { registerVnePlugin } from "./register-vne.js";
5
5
  export { resetDom } from "./reset-dom.js";
6
- export { spyEvent } from "./spy-event.js";
6
+ export { expectCallSequence } from "./expect-call-sequence.js";
7
+ export { spyEvent, type EventSpy } from "./spy-event.js";
7
8
  export { stubEvent, stubLogsEmit, stubVendorEvents } from "./stub-event.js";
8
9
  export { mockFullscreen } from "./mocks/dom.js";
9
10
  export { createLocalforageMock } from "./mocks/localforage.js";
package/dist/index.js CHANGED
@@ -3,6 +3,7 @@ export { createTestModule } from "./harness.js";
3
3
  export { registerCoreVne } from "./register-core-vne.js";
4
4
  export { registerVnePlugin } from "./register-vne.js";
5
5
  export { resetDom } from "./reset-dom.js";
6
+ export { expectCallSequence } from "./expect-call-sequence.js";
6
7
  export { spyEvent } from "./spy-event.js";
7
8
  export { stubEvent, stubLogsEmit, stubVendorEvents } from "./stub-event.js";
8
9
  export { mockFullscreen } from "./mocks/dom.js";
@@ -1,9 +1,9 @@
1
+ import { type Mock } from "vitest";
1
2
  export type MockFullscreenOptions = {
2
3
  fullscreenElement?: Element | null;
3
4
  };
4
- export declare const mockFullscreen: ({ fullscreenElement }?: MockFullscreenOptions) => {
5
- requestFullscreen: () => Promise<undefined>;
6
- exitFullscreen: () => Promise<undefined>;
7
- getRequestCount: () => number;
8
- getExitCount: () => number;
5
+ export type MockFullscreen = {
6
+ requestFullscreen: Mock<() => Promise<void>>;
7
+ exitFullscreen: Mock<() => Promise<void>>;
9
8
  };
9
+ export declare const mockFullscreen: ({ fullscreenElement }?: MockFullscreenOptions) => MockFullscreen;
package/dist/mocks/dom.js CHANGED
@@ -1,21 +1,12 @@
1
+ import { vi } from "vitest";
1
2
  export const mockFullscreen = ({ fullscreenElement = null } = {}) => {
2
3
  Object.defineProperty(document, "fullscreenElement", { value: fullscreenElement, configurable: true });
3
- let requestCount = 0;
4
- let exitCount = 0;
5
- const requestFullscreen = () => {
6
- requestCount += 1;
7
- return Promise.resolve(undefined);
8
- };
9
- const exitFullscreen = () => {
10
- exitCount += 1;
11
- return Promise.resolve(undefined);
12
- };
4
+ const requestFullscreen = vi.fn(() => Promise.resolve(undefined));
5
+ const exitFullscreen = vi.fn(() => Promise.resolve(undefined));
13
6
  document.body.requestFullscreen = requestFullscreen;
14
7
  document.exitFullscreen = exitFullscreen;
15
8
  return {
16
9
  requestFullscreen,
17
10
  exitFullscreen,
18
- getRequestCount: () => requestCount,
19
- getExitCount: () => exitCount,
20
11
  };
21
12
  };
@@ -1,7 +1,4 @@
1
1
  import type { Observer } from "@vnejs/observer";
2
- export declare const spyEvent: (observer: Observer, event: string) => {
3
- calls: unknown[][];
4
- count: () => number;
5
- last: () => unknown[] | undefined;
6
- first: () => unknown[];
7
- };
2
+ import { type Mock } from "vitest";
3
+ export type EventSpy = Mock<(...args: unknown[]) => void>;
4
+ export declare const spyEvent: (observer: Observer, event: string) => EventSpy;
package/dist/spy-event.js CHANGED
@@ -1,12 +1,8 @@
1
+ import { vi } from "vitest";
1
2
  export const spyEvent = (observer, event) => {
2
- const calls = [];
3
+ const spy = vi.fn();
3
4
  observer.subscribe(event, (...args) => {
4
- calls.push(args);
5
+ spy(...args);
5
6
  });
6
- return {
7
- calls,
8
- count: () => calls.length,
9
- last: () => calls.at(-1),
10
- first: () => calls[0],
11
- };
7
+ return spy;
12
8
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vnejs/test-utils",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
4
  "description": "Test harness utilities for @vnejs plugin modules",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -30,7 +30,8 @@
30
30
  "@vnejs/shared": "~0.1.0"
31
31
  },
32
32
  "peerDependencies": {
33
- "@vnejs/module": "~0.1.0"
33
+ "@vnejs/module": "~0.1.0",
34
+ "vitest": ">=3.0.0"
34
35
  },
35
36
  "devDependencies": {
36
37
  "@vnejs/configs.ts-common": "~0.1.0",
@@ -47,6 +48,7 @@
47
48
  "@vnejs/contracts.core.storage": "~0.1.0",
48
49
  "@vnejs/contracts.core.system": "~0.1.0",
49
50
  "@vnejs/contracts.core.vendors": "~0.1.0",
50
- "@vnejs/module": "~0.1.0"
51
+ "@vnejs/module": "~0.1.0",
52
+ "vitest": "~3.2.0"
51
53
  }
52
54
  }
@@ -0,0 +1,11 @@
1
+ import { expect } from "vitest";
2
+
3
+ import type { EventSpy } from "./spy-event.js";
4
+
5
+ export const expectCallSequence = (spy: EventSpy, ...calls: unknown[]) => {
6
+ expect(spy).toHaveBeenCalledTimes(calls.length);
7
+
8
+ calls.forEach((expected, index) => {
9
+ expect(spy.mock.calls[index]?.[0]).toMatchObject(expected as Record<string, unknown>);
10
+ });
11
+ };
package/src/index.ts CHANGED
@@ -3,7 +3,8 @@ export { createTestModule, type CreateTestModuleOptions, type TestModuleInstance
3
3
  export { registerCoreVne } from "./register-core-vne.js";
4
4
  export { registerVnePlugin } from "./register-vne.js";
5
5
  export { resetDom } from "./reset-dom.js";
6
- export { spyEvent } from "./spy-event.js";
6
+ export { expectCallSequence } from "./expect-call-sequence.js";
7
+ export { spyEvent, type EventSpy } from "./spy-event.js";
7
8
  export { stubEvent, stubLogsEmit, stubVendorEvents } from "./stub-event.js";
8
9
  export { mockFullscreen } from "./mocks/dom.js";
9
10
  export { createLocalforageMock } from "./mocks/localforage.js";
package/src/mocks/dom.ts CHANGED
@@ -1,22 +1,19 @@
1
+ import { vi, type Mock } from "vitest";
2
+
1
3
  export type MockFullscreenOptions = {
2
4
  fullscreenElement?: Element | null;
3
5
  };
4
6
 
5
- export const mockFullscreen = ({ fullscreenElement = null }: MockFullscreenOptions = {}) => {
6
- Object.defineProperty(document, "fullscreenElement", { value: fullscreenElement, configurable: true });
7
-
8
- let requestCount = 0;
9
- let exitCount = 0;
7
+ export type MockFullscreen = {
8
+ requestFullscreen: Mock<() => Promise<void>>;
9
+ exitFullscreen: Mock<() => Promise<void>>;
10
+ };
10
11
 
11
- const requestFullscreen = () => {
12
- requestCount += 1;
13
- return Promise.resolve(undefined);
14
- };
12
+ export const mockFullscreen = ({ fullscreenElement = null }: MockFullscreenOptions = {}): MockFullscreen => {
13
+ Object.defineProperty(document, "fullscreenElement", { value: fullscreenElement, configurable: true });
15
14
 
16
- const exitFullscreen = () => {
17
- exitCount += 1;
18
- return Promise.resolve(undefined);
19
- };
15
+ const requestFullscreen = vi.fn(() => Promise.resolve(undefined));
16
+ const exitFullscreen = vi.fn(() => Promise.resolve(undefined));
20
17
 
21
18
  document.body.requestFullscreen = requestFullscreen;
22
19
  document.exitFullscreen = exitFullscreen;
@@ -24,7 +21,5 @@ export const mockFullscreen = ({ fullscreenElement = null }: MockFullscreenOptio
24
21
  return {
25
22
  requestFullscreen,
26
23
  exitFullscreen,
27
- getRequestCount: () => requestCount,
28
- getExitCount: () => exitCount,
29
24
  };
30
25
  };
package/src/spy-event.ts CHANGED
@@ -1,16 +1,14 @@
1
1
  import type { Observer } from "@vnejs/observer";
2
+ import { vi, type Mock } from "vitest";
2
3
 
3
- export const spyEvent = (observer: Observer, event: string) => {
4
- const calls: unknown[][] = [];
4
+ export type EventSpy = Mock<(...args: unknown[]) => void>;
5
+
6
+ export const spyEvent = (observer: Observer, event: string): EventSpy => {
7
+ const spy = vi.fn() as EventSpy;
5
8
 
6
9
  observer.subscribe(event, (...args: unknown[]) => {
7
- calls.push(args);
10
+ spy(...args);
8
11
  });
9
12
 
10
- return {
11
- calls,
12
- count: () => calls.length,
13
- last: () => calls.at(-1),
14
- first: () => calls[0],
15
- };
13
+ return spy;
16
14
  };