Update unit tests for ThirdPersonNavigationController pointer lock handling

This commit is contained in:
2026-04-27 17:28:21 +02:00
parent d8da95f4c9
commit 93fe90a731

View File

@@ -179,8 +179,10 @@ describe("ThirdPersonNavigationController", () => {
const { context, domElement } = createRuntimeControllerContext(playerStart); const { context, domElement } = createRuntimeControllerContext(playerStart);
const controller = new ThirdPersonNavigationController(); const controller = new ThirdPersonNavigationController();
const controllerInternals = controller as unknown as { const controllerInternals = controller as unknown as {
pointerLocked: boolean;
handleMouseMove(event: MouseEvent): void; handleMouseMove(event: MouseEvent): void;
}; };
const requestPointerLock = vi.fn();
const mouseMoveEvent = new MouseEvent("mousemove"); const mouseMoveEvent = new MouseEvent("mousemove");
Object.defineProperty(mouseMoveEvent, "movementX", { Object.defineProperty(mouseMoveEvent, "movementX", {
@@ -191,13 +193,15 @@ describe("ThirdPersonNavigationController", () => {
configurable: true, configurable: true,
value: 0 value: 0
}); });
Object.defineProperty(document, "pointerLockElement", { Object.defineProperty(domElement, "requestPointerLock", {
configurable: true, configurable: true,
get: () => domElement value: requestPointerLock
}); });
controller.activate(context); controller.activate(context);
document.dispatchEvent(new Event("pointerlockchange")); expect(requestPointerLock).toHaveBeenCalledTimes(1);
controllerInternals.pointerLocked = true;
controllerInternals.handleMouseMove(mouseMoveEvent); controllerInternals.handleMouseMove(mouseMoveEvent);
controller.update(0); controller.update(0);