style: apply oxfmt

This commit is contained in:
Peter Steinberger
2026-01-17 01:55:42 +00:00
parent 767f55b127
commit 3fb699a84b
22 changed files with 375 additions and 377 deletions

View File

@@ -1,4 +1,4 @@
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
import {
clearInternalHooks,
createInternalHookEvent,
@@ -7,9 +7,9 @@ import {
triggerInternalHook,
unregisterInternalHook,
type InternalHookEvent,
} from './internal-hooks.js';
} from "./internal-hooks.js";
describe('internal-hooks', () => {
describe("internal-hooks", () => {
beforeEach(() => {
clearInternalHooks();
});
@@ -18,174 +18,174 @@ describe('internal-hooks', () => {
clearInternalHooks();
});
describe('registerInternalHook', () => {
it('should register a hook handler', () => {
describe("registerInternalHook", () => {
it("should register a hook handler", () => {
const handler = vi.fn();
registerInternalHook('command:new', handler);
registerInternalHook("command:new", handler);
const keys = getRegisteredEventKeys();
expect(keys).toContain('command:new');
expect(keys).toContain("command:new");
});
it('should allow multiple handlers for the same event', () => {
it("should allow multiple handlers for the same event", () => {
const handler1 = vi.fn();
const handler2 = vi.fn();
registerInternalHook('command:new', handler1);
registerInternalHook('command:new', handler2);
registerInternalHook("command:new", handler1);
registerInternalHook("command:new", handler2);
const keys = getRegisteredEventKeys();
expect(keys).toContain('command:new');
expect(keys).toContain("command:new");
});
});
describe('unregisterInternalHook', () => {
it('should unregister a specific handler', () => {
describe("unregisterInternalHook", () => {
it("should unregister a specific handler", () => {
const handler1 = vi.fn();
const handler2 = vi.fn();
registerInternalHook('command:new', handler1);
registerInternalHook('command:new', handler2);
registerInternalHook("command:new", handler1);
registerInternalHook("command:new", handler2);
unregisterInternalHook('command:new', handler1);
unregisterInternalHook("command:new", handler1);
const event = createInternalHookEvent('command', 'new', 'test-session');
const event = createInternalHookEvent("command", "new", "test-session");
void triggerInternalHook(event);
expect(handler1).not.toHaveBeenCalled();
expect(handler2).toHaveBeenCalled();
});
it('should clean up empty handler arrays', () => {
it("should clean up empty handler arrays", () => {
const handler = vi.fn();
registerInternalHook('command:new', handler);
unregisterInternalHook('command:new', handler);
registerInternalHook("command:new", handler);
unregisterInternalHook("command:new", handler);
const keys = getRegisteredEventKeys();
expect(keys).not.toContain('command:new');
expect(keys).not.toContain("command:new");
});
});
describe('triggerInternalHook', () => {
it('should trigger handlers for general event type', async () => {
describe("triggerInternalHook", () => {
it("should trigger handlers for general event type", async () => {
const handler = vi.fn();
registerInternalHook('command', handler);
registerInternalHook("command", handler);
const event = createInternalHookEvent('command', 'new', 'test-session');
const event = createInternalHookEvent("command", "new", "test-session");
await triggerInternalHook(event);
expect(handler).toHaveBeenCalledWith(event);
});
it('should trigger handlers for specific event action', async () => {
it("should trigger handlers for specific event action", async () => {
const handler = vi.fn();
registerInternalHook('command:new', handler);
registerInternalHook("command:new", handler);
const event = createInternalHookEvent('command', 'new', 'test-session');
const event = createInternalHookEvent("command", "new", "test-session");
await triggerInternalHook(event);
expect(handler).toHaveBeenCalledWith(event);
});
it('should trigger both general and specific handlers', async () => {
it("should trigger both general and specific handlers", async () => {
const generalHandler = vi.fn();
const specificHandler = vi.fn();
registerInternalHook('command', generalHandler);
registerInternalHook('command:new', specificHandler);
registerInternalHook("command", generalHandler);
registerInternalHook("command:new", specificHandler);
const event = createInternalHookEvent('command', 'new', 'test-session');
const event = createInternalHookEvent("command", "new", "test-session");
await triggerInternalHook(event);
expect(generalHandler).toHaveBeenCalledWith(event);
expect(specificHandler).toHaveBeenCalledWith(event);
});
it('should handle async handlers', async () => {
it("should handle async handlers", async () => {
const handler = vi.fn(async () => {
await new Promise((resolve) => setTimeout(resolve, 10));
});
registerInternalHook('command:new', handler);
registerInternalHook("command:new", handler);
const event = createInternalHookEvent('command', 'new', 'test-session');
const event = createInternalHookEvent("command", "new", "test-session");
await triggerInternalHook(event);
expect(handler).toHaveBeenCalledWith(event);
});
it('should catch and log errors from handlers', async () => {
const consoleError = vi.spyOn(console, 'error').mockImplementation(() => {});
it("should catch and log errors from handlers", async () => {
const consoleError = vi.spyOn(console, "error").mockImplementation(() => {});
const errorHandler = vi.fn(() => {
throw new Error('Handler failed');
throw new Error("Handler failed");
});
const successHandler = vi.fn();
registerInternalHook('command:new', errorHandler);
registerInternalHook('command:new', successHandler);
registerInternalHook("command:new", errorHandler);
registerInternalHook("command:new", successHandler);
const event = createInternalHookEvent('command', 'new', 'test-session');
const event = createInternalHookEvent("command", "new", "test-session");
await triggerInternalHook(event);
expect(errorHandler).toHaveBeenCalled();
expect(successHandler).toHaveBeenCalled();
expect(consoleError).toHaveBeenCalledWith(
expect.stringContaining('Internal hook error'),
expect.stringContaining('Handler failed')
expect.stringContaining("Internal hook error"),
expect.stringContaining("Handler failed"),
);
consoleError.mockRestore();
});
it('should not throw if no handlers are registered', async () => {
const event = createInternalHookEvent('command', 'new', 'test-session');
it("should not throw if no handlers are registered", async () => {
const event = createInternalHookEvent("command", "new", "test-session");
await expect(triggerInternalHook(event)).resolves.not.toThrow();
});
});
describe('createInternalHookEvent', () => {
it('should create a properly formatted event', () => {
const event = createInternalHookEvent('command', 'new', 'test-session', {
foo: 'bar',
describe("createInternalHookEvent", () => {
it("should create a properly formatted event", () => {
const event = createInternalHookEvent("command", "new", "test-session", {
foo: "bar",
});
expect(event.type).toBe('command');
expect(event.action).toBe('new');
expect(event.sessionKey).toBe('test-session');
expect(event.context).toEqual({ foo: 'bar' });
expect(event.type).toBe("command");
expect(event.action).toBe("new");
expect(event.sessionKey).toBe("test-session");
expect(event.context).toEqual({ foo: "bar" });
expect(event.timestamp).toBeInstanceOf(Date);
});
it('should use empty context if not provided', () => {
const event = createInternalHookEvent('command', 'new', 'test-session');
it("should use empty context if not provided", () => {
const event = createInternalHookEvent("command", "new", "test-session");
expect(event.context).toEqual({});
});
});
describe('getRegisteredEventKeys', () => {
it('should return all registered event keys', () => {
registerInternalHook('command:new', vi.fn());
registerInternalHook('command:stop', vi.fn());
registerInternalHook('session:start', vi.fn());
describe("getRegisteredEventKeys", () => {
it("should return all registered event keys", () => {
registerInternalHook("command:new", vi.fn());
registerInternalHook("command:stop", vi.fn());
registerInternalHook("session:start", vi.fn());
const keys = getRegisteredEventKeys();
expect(keys).toContain('command:new');
expect(keys).toContain('command:stop');
expect(keys).toContain('session:start');
expect(keys).toContain("command:new");
expect(keys).toContain("command:stop");
expect(keys).toContain("session:start");
});
it('should return empty array when no handlers are registered', () => {
it("should return empty array when no handlers are registered", () => {
const keys = getRegisteredEventKeys();
expect(keys).toEqual([]);
});
});
describe('clearInternalHooks', () => {
it('should remove all registered handlers', () => {
registerInternalHook('command:new', vi.fn());
registerInternalHook('command:stop', vi.fn());
describe("clearInternalHooks", () => {
it("should remove all registered handlers", () => {
registerInternalHook("command:new", vi.fn());
registerInternalHook("command:stop", vi.fn());
clearInternalHooks();
@@ -194,33 +194,33 @@ describe('internal-hooks', () => {
});
});
describe('integration', () => {
it('should handle a complete hook lifecycle', async () => {
describe("integration", () => {
it("should handle a complete hook lifecycle", async () => {
const results: InternalHookEvent[] = [];
const handler = vi.fn((event: InternalHookEvent) => {
results.push(event);
});
// Register
registerInternalHook('command:new', handler);
registerInternalHook("command:new", handler);
// Trigger
const event1 = createInternalHookEvent('command', 'new', 'session-1');
const event1 = createInternalHookEvent("command", "new", "session-1");
await triggerInternalHook(event1);
const event2 = createInternalHookEvent('command', 'new', 'session-2');
const event2 = createInternalHookEvent("command", "new", "session-2");
await triggerInternalHook(event2);
// Verify
expect(results).toHaveLength(2);
expect(results[0].sessionKey).toBe('session-1');
expect(results[1].sessionKey).toBe('session-2');
expect(results[0].sessionKey).toBe("session-1");
expect(results[1].sessionKey).toBe("session-2");
// Unregister
unregisterInternalHook('command:new', handler);
unregisterInternalHook("command:new", handler);
// Trigger again - should not call handler
const event3 = createInternalHookEvent('command', 'new', 'session-3');
const event3 = createInternalHookEvent("command", "new", "session-3");
await triggerInternalHook(event3);
expect(results).toHaveLength(2);