Skip to main content
Glama
pubsub.test.ts1.42 kB
import { describe, it, expect, vi } from 'vitest'; import { PubSub } from '../../src/engine/pubsub'; describe('PubSub System', () => { it('should allow subscription to topics', () => { const pubsub = new PubSub(); const callback = vi.fn(); pubsub.subscribe('combat', callback); pubsub.publish('combat', { type: 'test' }); expect(callback).toHaveBeenCalledWith({ type: 'test' }); }); it('should not receive events for other topics', () => { const pubsub = new PubSub(); const callback = vi.fn(); pubsub.subscribe('combat', callback); pubsub.publish('world', { type: 'test' }); expect(callback).not.toHaveBeenCalled(); }); it('should allow unsubscription', () => { const pubsub = new PubSub(); const callback = vi.fn(); const unsubscribe = pubsub.subscribe('combat', callback); unsubscribe(); pubsub.publish('combat', { type: 'test' }); expect(callback).not.toHaveBeenCalled(); }); it('should handle multiple subscribers', () => { const pubsub = new PubSub(); const cb1 = vi.fn(); const cb2 = vi.fn(); pubsub.subscribe('combat', cb1); pubsub.subscribe('combat', cb2); pubsub.publish('combat', { type: 'test' }); expect(cb1).toHaveBeenCalled(); expect(cb2).toHaveBeenCalled(); }); });

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Mnehmos/rpg-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server